dizi foreach sorun

4 Cevap php

I foreach tablosuna foreach statement.Though girişi ile bazı sorun yaşıyorum bir dizidir, diyor

Invalid argument supplied for foreach()

ve benim kod bu gibi görünüyor

foreach($res_array as $res)
     {
       foreach($res as $re)
       {
           echo $re['shortUrl'];
       }
     }

ve benim dizi bu gibi görünüyor

Array ( [errorCode] => 0 [errorMessage] => [results] => Array ( [http://www.telegraph.co.uk/earth/earthpicturegalleries/5966251/The-weirdest-animals-on-Planet-Earth.html?image=5] => Array ( [hash] => 2qNNV6 [shortUrl] => http://su.pr/2qNNV6 ) ) [statusCode] => OK )

Ben ikinci foreach için bu hatayı alıyorum. Bu sorun bana yardımcı olun.

4 Cevap

Sana $res_array['results'] üzerinde döngü yerine, $res_array istiyorum düşünüyorum. Sen foreach ya döngüler yuva gerekmez.

Sonuç dizi bazı ek bilgiler içerir gibi görünüyor, bu yüzden (denenmemiş) gibi bir şey yapmak isteyebilirsiniz:

$res_array = GetResultsFromSomewhere();

if ($res_array['errorCode']) {
    die("Error {$res_array['errorCode']}: {$res_array['errorMessage']}");
}

foreach ($res_array['results'] as $url => $item) {
    echo $item['shortUrl'];
}

Orijinal dizinin her elemanı bir dizidir çünkü. Örneğin, böylece bir hata atma, bir tam sayıdır errorCode, hangi var.

Sizin örnekte üst dizinin her değeri de bir dizidir. Bu örnekten doğru gibi görünmüyor. İkinci foreach döngüsünü gerçekleştirmeden önce, check whether element is an array gerekir.

Sen değil tüm elemanı dizi olan bir dizi var, o yüzden bir dizi ya da sonra almak ise ilk olarak her elemanını kontrol etmek için ilk gerekir.

<?php
foreach($res_array as $res)
     {
      if(is_array($res))
       foreach($res as $re)
        {
           echo $re['shortUrl'];
        }
     }
?>