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

Как вывести ассоциативный массив в php

  • автор:

Ассоциативные массивы в PHP

Чтобы обратиться к нужному элементу этого массива, мы должны написать в квадратных скобках ключ этого элемента. Как вы знаете, в массивах PHP сам определяет ключи для элементов — это их порядковые номера. Но иногда это может оказаться неудобным: например, мы хотим вывести на экран название первого дня недели, а должны писать в квадратных скобках цифру 0 .

Логичнее и удобнее было бы все-таки для первого дня недели писать ключ 1 , как привыкли мы в жизни. Для этого используются массивы. Они имеют следующий синтаксис: имя ключа, затем идет стрелка => , а потом значение. Давайте укажем явные ключи для нашего массива дней:

‘пн’, 2 => ‘вт’, 3 => ‘ср’, 4 => ‘чт’, 5 => ‘пт’, 6 => ‘сб’, 7 => ‘вс’]; ?>

После добавления наших ключей обратиться к понедельнику можно уже по ключу 1 , а не 0 . Сделаем это:

Создайте массив с ключами 1 , 2 и 3 и значениями ‘a’ , ‘b’ и ‘c’ . Выведите на экран все его элементы.

Вывести элементы многомерного ассоциативного массива php

У меня есть вот такой массив. Я хочу вывести в строку полное имя (Piter Parker) и отдельно его ‘rate’. А то пробую проверять через is_array и далее выводить. В случаи с 1(подмассивом в массиве ‘owners’) еще получается, но так как их 2(а может быть и больше) выводит или Null или Array

$tasks = [ [ 'taskID' => '01', 'taskTitle' => 'Design', 'owners' => [ [ 'name' => 'Piter', 'surname' => 'Parker', 'rate' => 'middle', ], [ 'name' => 'Bart', 'surname' => 'Simpson', 'rate' => 'junior', ] ], 

// далее аналогичный блок в массиве

Отслеживать

задан 27 окт 2020 в 15:09

1 1 1 бронзовый знак

А как вы его пытаетесь вывести, где код?

27 окт 2020 в 15:16

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

foreach ($tasks as $task)< //проходим по всем заданиям (первый уровень масива) foreach ($task['owners'] as $owner)< // проходим по всем исполнителям (второй уровень масива) echo $owner['name'] . ' ' . $owner['surname']; // выводим имя и фамилию echo '
'; echo $owner['rate']; // выводим статус > >

Отслеживать

ответ дан 27 окт 2020 в 15:39

Dmytro Kondratiuk Dmytro Kondratiuk

2,126 1 1 золотой знак 9 9 серебряных знаков 13 13 бронзовых знаков

Ключи в кавычках же.

27 окт 2020 в 15:41

Спасибо большое за помощь. Не прикрепил свой код (затупил). Делал похожим способом, не додумался во втором foreach прописать $task[‘owners’]. Писал просто $task as $owner

Как вывести ассоциативный массив в php

Ассоциативные массивы представляют подвид массивов, в которых, в отличие от обычных массивов, в качестве ключа применяются строки.

При создании ассоциативного массива мы явным образом указываем ключ элемента, после которого идет оператор => и значение элемента. Например, создание ассоциативного массива с помощью функции array() :

$words = array("red" => "красный", "blue" => "синий", "green" => "зеленый");

Здесь создается массив $words из трех элементов. Например, первый элемент имеет ключ «red», а значение — «красный».

Создание аналогичного массива с помощью квадратных скобок:

$words = ["red" => "красный", "blue" => "синий", "green" => "зеленый"];

Используя ключ, также как и в обычных массивах, можно обратиться к элементу массива, например, получить или изменить его значение:

 "Berlin", "France" => "Paris", "Spain" => "Madrid"]; echo $countries["Spain"]; // Madrid echo "
"; $countries["Spain"] = "Barcelona"; echo $countries["Spain"]; // Barcelona ?>

Результат работы скрипта:

Madrid Barcelona

Для добавления элемента с новым ключом в ассоциативный массив достаточно определить элемент с этим ключом:

$countries = ["Germany" => "Berlin", "France" => "Paris", "Spain" => "Madrid"]; $countries["Italy"] = "Rome"; // определяем новый элемент с ключом "Italy" echo $countries["Italy"]; // Rome

Также необязательно инициализировать переменную массива при ее определении. Можно, как с обычными массивами, добавлять элементы по ходу:

Для перебора ассоциативного массива применяется цикл foreach :

 "красный", "blue" => "синий", "green" => "зеленый"]; foreach($words as $english => $russian) < echo "$english : $russian
"; > ?>

Результат перебора массива:

red : красный blue : синий green : зеленый

Смешанные массивы

PHP позволяет использовать в одном массиве числовые и строковые индексы:

$data = [1=> "Tom", "id132" => "Sam", 56 => "Bob"]; echo $data[1]; // Tom echo "
"; echo $data["id132"]; // Sam

Как правильно вывести ассоциативный массив в 2 ряда по 3 элемента?

Всем привет. Стоит задача создать и заполнить ассоциированный массив в котором именами элементов — название страны, населения и название столицы. Вывести из массива таблицу в три строки по две ячейки в каждой. С этой задачей я справился, а вот изменить таблицу — 2 строки по 3 элемента. Вывести в первой строке только имена элементов, во втором — значение, я совсем не понимаю что тут они хотят. Подскажите, пожалуйста, как это реализовать?
Код первой части:

$names_с["Country_1"]="Украина, 46 млн., Киев"; $names_с["Country_2"]="Нидерланды, 17.02 млн., Амстердам"; $names_с["Country_3"]="Норвегия, 5.233 млн., Оспо"; echo ""; foreach ($names_с as $key => $value_с) < echo "$key $value_с
"; > echo "
";
  • Вопрос задан более трёх лет назад
  • 336 просмотров

Комментировать
Решения вопроса 1
Архитектор (обычный, который строит)

Использовать ассоциативный массив, чтобы дать ключам имена Country_1, Country_2, . нет никакого смысла. Тогда уж их можно просто пронумеровать. Подозреваю, что от вас хотят чего-то такого:

$contry_data[ 0 ] = array( 'country' => 'Украина', 'population' => 46, 'capital' => 'Киев' ); $contry_data[ 1 ] = array( 'country' => 'Нидерланды', 'population' => 17.02, 'capital' => 'Амстердам' ); $contry_data[ 2 ] = array( 'country' => 'Норвегия', 'population' => 5.233, 'capital' => 'Осло' );

Ну или правильнее даже так:

$contry_data = array ( 'Украина' => array ( 'population' => 46, 'capital' => 'Киев' ), 'Нидерланды' => array ( 'population' => 17.02, 'capital' => 'Амстердам' ), 'Норвегия' => array ( 'population' => 5.233, 'capital' => 'Осло' ), );

У вас 3 типа данных (название страны, население, столица) и 3 элемента данных (Украина, Нидерланды и Норвегия). Не понятно, о каких таблицах хоть 2х3, хоть 3х2 идёт речь. Тут как ни поверни, получается 3х3.

echo "странанаселениестолица"; foreach ( $contry_data as $country => $data ) < echo "".$country.""; foreach ( $data as $key => $value ) echo "".$value.""; echo ""; > echo "";

Ну а для транспонированного вида я ничего лучше не придумал:

echo "страна"; foreach ( $contry_data as $country => $data ) echo "".$country.""; echo "население"; foreach ( $contry_data as $country => $data ) echo "".$data[ 'population' ].""; echo "столица"; foreach ( $contry_data as $country => $data ) echo "".$data[ 'capital' ].""; echo "";

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *