Php bir nesne / diziden başka bir değere dayalı bir değer elde etmek için nasıl

3 Cevap php

Burada benim ilk soru, zevk sonra bir sürü diğer halklar soruları ve cevapları og. Bunun için teşekkürler :)

Im Vimeo API ile çalışmak için çalışıyor, ve im ben niyetinde olarak kullanmak çözemiyorum bir yanıt alıyorum. Sizlerle bazı basit düşünüyorum, ama etrafında başımı sarmak olamaz.

Ben için resim url almak gerekir video kimliği yıllardan bir grup var. Ben böyle döngü olsa bütün id "Bu kimliği için başparmak url Neler" yanıtı "sormak" ve istiyorum.

Yanıt nesnesi aşağı elimden sürümünde bu gibi görünüyor:

stdClass Object
(
    [videos] => stdClass Object
        (
            [video] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => 8128888
                            [thumbnails] => stdClass Object
                                (
                                    [thumbnail] => Array
                                        (
                                            [0] => stdClass Object
                                                (
                                                    [height] => 75
                                                    [width] => 100
                                                    [_content] => http://ts.vimeo.com.s3.amazonaws.com/370/931/37093137_100.jpg
                                                )
                                        )
                                )
                        )
                    [1] => stdClass Object
                        (
                            [id] => 8760295
                            [thumbnails] => stdClass Object
                                (
                                    [thumbnail] => Array
                                        (
                                            [0] => stdClass Object
                                                (
                                                    [height] => 75
                                                    [width] => 100
                                                    [_content] => http://ts.vimeo.com.s3.amazonaws.com/417/146/41714684_100.jpg
                                                )
                                        )
                                )
                        )
                )
        )
)

Ben (Tekrar aşağı sıyrılmış) bu gibi kullanmak gerekiyor, onun aktardığı kısmı ben çözemiyorum:

<?php while ( $vid->fetchRecord() ) :
    $vid_id = $vid->get_field('video');
    $thumb = "find [video][thumbnail][0][_content] where [video][id] = $vid_id";
?>
<img src="<?php echo $thumb;?>" 
<?php endwhile ?>

Peki, ben ne kadar yakın olduğumu? : P

3 Cevap

Eğer kullanmak için basit bir diziye bu yapıyı yeniden tanımlamak olabilir. Aşağıda, bu yapının kabul depolanır $response,

$videos = array();
foreach($response->videos->video as $video) {
  if(count($video->thumbnails->thumbnail) > 0) {
    $videos[$video->id] = $video->thumbnails->thumbnail[0]->_content;
  }
}

Bu url eşleşmelerinin id bir dizi $videos ile yalnız bırakacaktır:

Array(
  '8128888' => 'http://ts.vimeo.com.s3.amazonaws.com/370/931/37093137_100.jpg',
  '8760295' => 'http://ts.vimeo.com.s3.amazonaws.com/417/146/41714684_100.jpg'
)

Çıkış kodu sonra sadece olması gerekir:

<?php while ( $vid->fetchRecord() ) :
    $vid_id = $vid->get_field('video');
    $thumb = $videos[$vid_id];
?>
<img src="<?php echo $thumb;?>" 
<?php endwhile ?>

Yanılmıyorsam eğer girdiğiniz kodun ilk bölümü böyle bir şey yürütme karşılık gelebilir:

var_dump($responseObject);

Yani bu varsayımı aşağıdaki denemek ve bunun gibi tüm iade videolar için bir minik alabilirsiniz:

<?php foreach($responseObject->videos->video as $video) { ?>
    <img src="<?= $video->thumbnails->thumbnail[0]->_content?>" />
<?php } ?>

Bu benim size süre () döngü ile gerçekleştirmek için deneyin bence budur.

Böyle yukarıda yayınlanmıştır nesne / diziler yürüyebiliyordu:

// $vid is the object you posted above
foreach( $vid->videos->video as $key => &$video ) {
    echo "id: " . $video->id;
    echo "thumbnails: \n";
    foreach( $video->thumbnails->thumbnail as $key => $thumb ) {
        echo "thumb {$key}: <img src=\" " . $thumb->_content . " \"> \n";
    }
}

Yalnızca bir veya birden fazla minik olduğunu wheter bakım gerekir yoksa basit yolları vardır.