2015-11-25 2 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; 
 
} 
 
}

Смежные вопросы