Как вывести двумерный масив в php

169
24 февраля 2018, 22:35

Знаю как вывести одномерный масив:

foreach ($array as $value) {}

или

foreach ($array as $key => $value) {}

Но что делать в этом случае?

    $A = array(
    array(
        "name"=>"John Petronnichi Wales",
        "sex"=>"Male",
        "email"=>"john_males166@gmail.com"
    ),
    array(
        "name"=>"Michale Josef Tabson",
        "sex"=>"Male",
        "email"=>"michaleTobys@gmail.com"
    ),
    array(
        "name"=>"Moral Eris Brigs",
        "sex"=>"Female",
        "email"=>"Eris_Brigs089@nova.got.com"
    )
);
Answer 1

В PHP нет двумерных и многомерных массивов. Но в PHP элементами массива могут быть другие массивы.

Цикл foreach перебирает массив и возвращает элементы этого массива, т.к. у Вас эти элементы, в свою очередь, являются массивами, то ничто не мешает запустить по этим элементам еще один цикл foreach

foreach ($A as $sub_array) {
  foreach ($sub_array as $key => $value) {
    printf("Name: %s, Value: %s\n", $key, $value);
  }
}

ну или просто обратиться как к массиву

foreach ($A as $sub_array) {
  echo $sub_array['name'];
}
Answer 2

Кроме вложенных циклов можно воспользоваться функцией array_walk_recursive() Она обойдёт массив любой глубины:

$A = array(
    array(
        "name"=>"John Petronnichi Wales",
        "sex"=>"Male",
        "email"=>"john_males166@gmail.com"
    ),
    array(
        "name"=>"Michale Josef Tabson",
        "sex"=>"Male",
        "email"=>"michaleTobys@gmail.com"
    ),
    array(
        "name"=>"Moral Eris Brigs",
        "sex"=>"Female",
        "email"=>"Eris_Brigs089@nova.got.com"
    )
);
array_walk_recursive($A,function($v,$k){ echo "$v<br>"; });

Результат:

John Petronnichi Wales
Male
john_males166@gmail.com
Michale Josef Tabson
Male
michaleTobys@gmail.com
Moral Eris Brigs
Female
Eris_Brigs089@nova.got.com
Answer 3

Вдобавок к остальным ответам:

<?php
    $A = array(
    array(
        "name"=>"John Petronnichi Wales",
        "sex"=>"Male",
        "email"=>"john_males166@gmail.com"
    ),
    array(
        "name"=>"Michale Josef Tabson",
        "sex"=>"Male",
        "email"=>"michaleTobys@gmail.com"
    ),
    array(
        "name"=>"Moral Eris Brigs",
        "sex"=>"Female",
        "email"=>"Eris_Brigs089@nova.got.com"
    )
);  

        foreach($A as $val){
            echo '<pre>';
            echo $val['email'].' '.$val['sex'].' '.$val['email'];
            echo '</pre>';
        }
        ?>
READ ALSO
Как правильно вывести html через функцию echo

Как правильно вывести html через функцию echo

В теге use идёт ссылка на svg спрайт и эта ссылка "не работает", то есть не задаёт правильный адрес

158
Несколько этапов регистрации с помощью Pjax

Несколько этапов регистрации с помощью Pjax

Доброго времени сутокБуквально только что разобрался с Pjax-ом, но теперь есть задача посложнее

165