2013-07-20 86 views
-2

我需要一些幫助讀取多維數組中的值。該數組如下所示。在PHP中讀取多列陣數

Array 
(
    [translations] => Array 
     (
      [0] => Array 
       (
        [translatedText] => fantasma 
        [detectedSourceLanguage] => en 
       ) 
     ) 
) 

我嘗試了以下方法,但一直保持空白。任何幫助表示讚賞?

foreach($item as $translations) 
{ 
     foreach($row['0'] as $k) 
     { 
      echo $k['translatedText']; 
      echo $k['detectedSourceLanguage']; 
     } 
} 
+0

哪裏'$ row'從何而來? – Barmar

回答

-1

問題是您沒有定義$row變量。好消息是你不需要它。

您可以簡單地這樣做:

foreach($item as $translations => $values) 
{ 
     foreach($values as $k) 
     { 
      echo $k['translatedText']."\n"; 
      echo $k['detectedSourceLanguage']; 
     } 
} 
+0

試過了,它沒有工作。 –

+0

發生了什麼事?我得到了這個,它適用於我:http://ideone.com/nQsWQT – jh314

0

試試這個:

foreach ($item['translations'] as $translation) { 
    echo $translation['translatedText']; 
    echo $translation['detectedSourceLanguage']; 
} 

DEMO

+0

哇超級第一響應!我試過了,它沒有工作=(** –

+0

你能解釋一下你期望打印什麼,以及它是如何不同的嗎? – Barmar

+0

如果你顯示的不僅僅是數組中的一個元素,這將有所幫助,所以我可以精確地告訴你想要迭代哪個部分。 – Barmar

0

更改您的代碼如下:

$test = Array(
    "translations" => Array (
     "0" => Array (
      "translatedText" => "fantasma", 
      "detectedSourceLanguage" => "en" 
     ) 
    ) 
); 

foreach ($test as $translations) { 
    foreach ($translations as $k) { 
     echo $k["translatedText"]; 
     echo "<br/>"; 
     echo $k["detectedSourceLanguage"]; 
    } 
} 

這應該工作。

按照此有關陣列的詳細信息:http://php.net/manual/en/language.types.array.php

+0

你先生是天才!XOXOXO –

+0

@downvoter請關注評論。 –

2

與foreach循環工作時,你想叫你計劃使用以下語法遍歷數組:

foreach($array as $variable){ } 

數組是數組你打算通過,而變量是你打算在foreach內調用它的變量。在foreach循環

更多信息可以在PHP:foreach

隨着中說找到,試試下面的代碼:

$data = array(
    "translations" => array(
     array("translatedText" => "fantasma", 
       "detectedSourceLanguage" => "en" 
     ) 
    ) 
); 

echo "<pre>"; 
echo print_r($data); 
echo "</pre>"; 

foreach($data["translations"] as $translation) { 
    echo $translation['translatedText'] . "<br />"; 
    echo $translation['detectedSourceLanguage'] . "<br />"; 
} 

//Or, if the $data variable will be holding multiple translation arrays: 

foreach($data as $d) { 
    foreach($d as $translation){ 
     echo $translation['translatedText']; 
     echo $translation['detectedSourceLanguage']; 
    } 
}