2016-01-18 170 views
0

我有一個數組($ myarray),我嘗試輸出foreach循環中的每個元素與它的鍵和值,但我不知道如何。以下數組是分析的.ini文件的結果。這是print_r($myarray);輸出多維數組與鍵和值

Array 
(
    [Array1] => Array ([A] => Test [B] => 123) 
    [Array2] => Array ([C] => Test [D] => 123) 
    [Array3] => Array ([E] => Test [F] => 123) 
) 

輸出我試着這樣說:

foreach ($myarray as $x) 
{ 
    echo "<p>".$x." "; 

    foreach($x as $key => $value) 
    { 
     echo $key." = ".$value . ";"; 

    } 
    echo "</p>"; 
} 

我希望這樣的事情:

Array1: A = Test; B = 123 
Array2: C = Test; D = 123 
Array3: E = Test; F = 123 

但unfortunattely我沒有得到任何輸出。我明顯地誤解了一些東西。

+1

任何錯誤消息? –

+0

沒有錯誤信息。該頁面的其餘部分起作用。也許錯誤報告被停用?我必須檢查它。 – Black

+1

好的,你能迴應這個循環中的其他東西嗎? –

回答

2

您內在的foreach是正確的,因爲您通過$key => $value語法將鍵和值分配給變量。你需要做同樣的事情在你的外循環:

foreach ($myarray as $x => $y) 
{ 
    echo "<p>".$x." "; 

    foreach($y as $key => $value) 
    { 
     echo $key." = ".$value . ";"; 

    } 
    echo "</p>"; 
} 
3

您的代碼看起來工作幾乎精細唯一的區別是你不定義鍵/值對的主數組所以你期望得到從陣列的鍵背面(),這將X返回$作爲陣列()或全無時輸出

$myarray = array(
      "Array1" =>array("A" => "Test", "B" => 123), 
      "Array2" =>array("C" => "Test", "D" => 123), 
      "Array3" =>array("E" => "Test", "F" => 123) 
      ); 
foreach ($myarray as $masterkey => $mastervalue) 
{ 
    echo "<p>".$masterkey." "; 

    foreach($mastervalue as $key => $value) 
    { 
     echo $key." = ".$value . ";"; 

    } 
    echo "</p>"; 
} 

這是我使用的示例代碼(基於關閉你的)

輸出

Array1 A = Test;B = 123; 

Array2 C = Test;D = 123; 

Array3 E = Test;F = 123; 
1

或者,你可以使用:

echo '<pre>'; 
echo print_r($myarray, true); // this will return the output, not echo it 
echo '</pre>'; 

或者

echo '<pre>'; 
print_r($myarray); // this echo it, but after <pre> and before </pre> 
echo '</pre>'; 

或者寫一個遞歸函數:

function output_myarray($myarray) { 
    $output = array(); 

    foreach($myarray as $key => $value) { 
     if(is_array($value)) { 
      $output[] = output_myarray($value); 
     } else { 
      $output[] = '<p>' . $key . ' = ' . $value . ';'; 
     } 
    } 

    return $output; 
} 

和回聲它:

echo '<pre>'; 
echo print_r(output_myarray($myarray), true); 
echo '</pre>'; 

甚至simplier:

echo implode('', output_myarray($myarray), true); 

或者通過新的生產線:

echo implode("\n", output_myarray($myarray), true);