Ассоциативные массивы в PHP
Чтобы обратиться к нужному элементу этого массива, мы должны написать в квадратных скобках ключ этого элемента. Как вы знаете, в массивах PHP сам определяет ключи для элементов — это их порядковые номера. Но иногда это может оказаться неудобным: например, мы хотим вывести на экран название первого дня недели, а должны писать в квадратных скобках цифру 0 .
Логичнее и удобнее было бы все-таки для первого дня недели писать ключ 1 , как привыкли мы в жизни. Для этого используются массивы. Они имеют следующий синтаксис: имя ключа, затем идет стрелка => , а потом значение. Давайте укажем явные ключи для нашего массива дней:
‘пн’, 2 => ‘вт’, 3 => ‘ср’, 4 => ‘чт’, 5 => ‘пт’, 6 => ‘сб’, 7 => ‘вс’]; ?>?php>
После добавления наших ключей обратиться к понедельнику можно уже по ключу 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 " ";