2015-11-25 83 views
1

我有一個數組,我想輸出一些數據:如何僅輸出子陣列的值?

array(4) { 
    [123]=> 
    array(2) { 
    ["color"]=> 
    string(3) "red" 
    ["name"]=> 
    string(5) "harry" 
    } 
    [345]=> 
    array(2) { 
    ["color"]=> 
    string(4) "blue" 
    ["name"]=> 
    string(4) "fred" 
    } 
    ["animal"]=> 
    string(5) "horse" 
    ["plant"]=> 
    string(4) "tree" 
} 

這是我的解決方案,這是我的感覺很unsmart:

echo "<b>These are all the colors:</b><br>"; 

foreach ($properties as $key => $val) { 
if ($key != "plant" AND $key != "animal"){ 
echo $val['color']."<br>"; 
} 
} 
echo "<b>This is the animal:</b><br>";    

foreach ($properties as $key => $val) { 
if ($key == "animal"){ 
echo $val."<br>"; 
} 
} 


echo "<b>This is the plant:</b><br>"; 

foreach ($properties as $key => $val) { 
if ($key == "plant"){ 
echo $val."<br>"; 
} 
} 

它給了我想要的結果.. 。

這些都是顏色:

藍色

這是動物:

這是植物:

...但我想,也許你知道更簡單的方案。我相信只能談論子陣列才行,但我找不到辦法。

+0

這是對象試試這個'$ val->顏色;' – jay

+0

@jay這不是一個對象 – Rizier123

+0

等待我運行這段代碼不如說是 – jay

回答

1

自PHP 5.5,你可以使用array_column

$color = array_column($properties, 'color'); 

由於PHP 5.3,你可以用一個匿名函數使用array_map,像這樣:

$color = array_map(function ($ar) {return $ar['color'];}, $properties); 

print_r($color); 
exit; 
+0

謝謝你,好主意! – Jarla

1

我認爲,利用交換機在foreach中,這將有助於解決這個問題。

foreach ($properties as $key => $val) { 
 
switch($key){ 
 
case '': 
 
break; 
 
} 
 
}