如何只输出子数组的值?

时间:2015-11-25 13:13:45

标签: php arrays multidimensional-array

我有一个数组,我想输出一些数据:

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"
}

这是我的解决方案,我感觉非常不智:

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>";
}
}

它给了我想要的结果......

这些都是颜色:

红色

蓝色

这是动物:

这是工厂:

...但我想也许你知道一个更简单的解决方案。我确信必须只能与子阵列交谈,但我找不到办法。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

我认为,在foreach中使用Switch会对这个问题有帮助。

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