PHP foreach цикл через многомерный массив

У меня есть массив:

$arr_nav = array( array( "id" => "apple", "url" => "apple.html", "name" => "My Apple" ), array( "id" => "orange", "url" => "orange/oranges.html", "name" => "View All Oranges", ), array( "id" => "pear", "url" => "pear.html", "name" => "A Pear" ) ); 

Который я хотел бы использовать цикл foreach для замены (что только позволяет мне установить число:

 for ($row = 0; $row < 5; $row++) 

с возможностью отображения .first и .last для соответствующих значений массива

редактировать

Я бы хотел, чтобы данные отражались как:

 <li id="' . $arr_nav[$row]["id"] . '"><a href="' . $v_url_root . $arr_nav[$row]["url"] . '" title="' . $arr_nav[$row]["name"] . '">"' . $arr_nav[$row]["name"] . '</a></li>' . "\r\n"; 

Большое спасибо за ваши быстрые ответы. Скалы StackOverflow!

Solutions Collecting From Web of "PHP foreach цикл через многомерный массив"

 $last = count($arr_nav) - 1; foreach ($arr_nav as $i => $row) { $isFirst = ($i == 0); $isLast = ($i == $last); echo ... $row['name'] ... $row['url'] ...; } 
 <?php $php_multi_array = array("lang"=>"PHP", "type"=>array("c_type"=>"MULTI", "p_type"=>"ARRAY")); //Iterate through an array declared above foreach($php_multi_array as $key => $value) { if (!is_array($value)) { echo $key ." => ". $value ."\r\n" ; } else { echo $key ." => array( \r\n"; foreach ($value as $key2 => $value2) { echo "\t". $key2 ." => ". $value2 ."\r\n"; } echo ")"; } } ?> 

ВЫВОД:

 lang => PHP type => array( c_type => MULTI p_type => ARRAY ) 

Исходный код ссылки

Если вы имеете в виду первую и последнюю запись массива при обсуждении a.first и a.last, это будет выглядеть так:

 foreach ($arr_nav as $inner_array) { echo reset($inner_array); //apple, orange, pear echo end($inner_array); //My Apple, View All Oranges, A Pear } 

массивы на PHP имеют внутренний указатель, который вы можете манипулировать с помощью сброса , затем , в конец . Извлечение ключей / значений работает с ключом и текущим , но использование во всех случаях может быть лучше.

 <?php $first = reset($arr_nav); // Get the first element $last = end($arr_nav); // Get the last element // Ensure that we have a first element and that it's an array if(is_array($first)) { $first['class'] = 'first'; } // Ensure we have a last element and that it differs from the first if(is_array($last) && $last !== $first) { $last['class'] = 'last'; } 

Теперь вы можете просто повторить класс внутри html-генератора. Вероятно, потребуется какой-то проверка, чтобы убедиться, что класс установлен, или предоставить пустой класс по умолчанию для массива.