Intereting Posts
Использовать filter_var () для проверки даты? Как проверить, установлена ​​ли версия OpenSSL> = 0.9.8k Удаленный вход не работает с завихрением как автоматически копировать весь каталог в виде эскизов, используя phpthumb (или некоторую другую библиотеку) Зачем мне нужно использовать многие функции очистки, чтобы очистить выходной буфер (используя wamp, PHP) функция usort в классе Как я могу определить уникальный URL-адрес для пользователя без использования их идентификатора? CSV-загрузка с помощью PHP / MySQL Проблемы с Symfony2 config.php: Примечание: неопределенное свойство: stdClass :: $ vendor-dir, отсутствуют библиотеки поставщиков, как их решить? Ошибка MySQL при вставке данных, содержащих апострофы (одинарные кавычки)? wkhtmltopdf – libfontconfig.so.1: невозможно открыть файл общих объектов Попытка понять, почему вы используете этот тип настройки базы данных Графический API-интерфейс Facebook через пейджинг Архив ZIP, отправленный PHP, поврежден в среде Openshift, как получить доступ к базе данных в другом приложении?

PHP foreach с вложенным массивом?

У меня есть вложенный массив, в котором я хочу отобразить подмножество результатов. Например, в приведенном ниже массиве я хочу перебрать все значения в вложенном массиве [1].

 массив
 (
   [0] => Массив
     (
       [0] => один
       [1] => Массив
         (
           [0] => 1
           [1] => 2
           [2] => 3
         )
     )

   [1] => Массив
     (
       [0] => два
       [1] => Массив
         (
           [0] => 4
           [1] => 5
           [2] => 6
         )
     )

   [2] => Массив
     (
       [0] => три
       [1] => Массив
         (
           [0] => 7
           [1] => 8
           [2] => 9
         )
     )
 )

Я пытался использовать функцию foreach, но я не могу заставить это работать. Это был мой оригинальный синтаксис (хотя я понимаю, что это неправильно).

 $ tmpArray = array (array ("one", array (1,2,3)), array ("two", array (4,5,6)), array ("three", array (7,8,9 )));

 foreach ($ tmpArray [1] как $ value) {
   echo $ value;
 }

Я пытался избежать переменного сравнения того, является ли ключ таким же, как ключ, который я хочу выполнить, т. Е.

 foreach ($ tmpArray as $ key => $ value) {
   if ($ key == 1) {
     echo $ value;
   }
 }

Есть идеи?

Related of "PHP foreach с вложенным массивом?"

Если вы знаете количество уровней в вложенных массивах, вы можете просто встраивать петли. Вот так:

 // Scan through outer loop foreach ($tmpArray as $innerArray) { // Check type if (is_array($innerArray)){ // Scan through inner loop foreach ($innerArray as $value) { echo $value; } }else{ // one, two, three echo $innerArray; } } 

если вы не знаете глубину массива, вам нужно использовать рекурсию. См. Пример ниже:

 // Multi-dementional Source Array $tmpArray = array( array("one", array(1, 2, 3)), array("two", array(4, 5, 6)), array("three", array( 7, 8, array("four", 9, 10) )) ); // Output array displayArrayRecursively($tmpArray); /** * Recursive function to display members of array with indentation * * @param array $arr Array to process * @param string $indent indentation string */ function displayArrayRecursively($arr, $indent='') { if ($arr) { foreach ($arr as $value) { if (is_array($value)) { // displayArrayRecursively($value, $indent . '--'); } else { // Output echo "$indent $value \n"; } } } } 

Код ниже с отображением только вложенного массива со значениями для вашего конкретного случая (только 3-го уровня)

 $tmpArray = array( array("one", array(1, 2, 3)), array("two", array(4, 5, 6)), array("three", array(7, 8, 9)) ); // Scan through outer loop foreach ($tmpArray as $inner) { // Check type if (is_array($inner)) { // Scan through inner loop foreach ($inner[1] as $value) { echo "$value \n"; } } } 

Оба синтаксиса верны. Но результатом будет Array . Вероятно, вы хотите сделать что-то вроде этого:

 foreach ($tmpArray[1] as $value) { echo $value[0]; foreach($value[1] as $val){ echo $val; } } 

Это напечатает строку «два» (значение $ [0]) и целые числа 4, 5 и 6 из массива (значение $ [1]).

 foreach ($tmpArray as $innerArray) { // Check type if (is_array($innerArray)){ // Scan through inner loop foreach ($innerArray as $value) { echo $value; } }else{ // one, two, three echo $innerArray; } } 

Идеальный работал для меня …. попробуйте это

Как насчет этих данных:

 [0] => Array ( [item] => null [count] => 0 [child] => Array ( [1] => Array ( [item] => 1 [count] => 6 [child] => Array ( [5] => Array ( [item] => 5 [count] => 3 [child] => Array ( [4] => Array ( [item] => 4 [count] => 1 ) ) ) [3] => Array ( [item] => 3 [count] => 2 [child] => Array ( [4] => Array ( [item] => 4 [count] => 1 ) ) ) ) ) [3] => Array ( [item] => 3 [count] => 1 [child] => Array ( [4] => Array ( [item] => 4 [count] => 1 ) ) ) ) ) 

Можете ли вы получить все пути? Данные выглядят как двоичное дерево. Нужна помощь