Многомерные и ассоциативные массивы

/ 👁 3882

Продолжаем изучение массивов в php. Сегодня мы поговорим о многомерных и ассоциативных массивах, а также затронем тему слияния массивов.
В прошлой статье мы разобрались в том: что такое массивы, зачем они нужны, как объявлять массивы, как получать и изменять значение элемента массива, а также, как узнать размер массива.

Сегодня мы окунемся в массивы немного глубже и поговорим о многомерных и ассоциативных массивах.

Многомерные массивы

многомерные массивы в php
В прошлый раз мы уже говорили о том, что массив представляет собой «волшебную коробку», в которую мы можем положить множество элементов, дать им определенные значения, а потом использовать эти элементы, изменять их значения, производить определенные операции и т.д.

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

Так вот – любому элементу массива можно присвоить другой массив, и тогда мы уже будем иметь дело с многомерным массивом.

Сделать это можно следующим образом:

<?php
$Mass2 = array();
$Mass2[0] = array(1,2,3,4,5);
?>

 

Здесь первая и последняя строка – это объявление php-кода.

Во второй строке мы объявляем массив «Mass2». Пока что он пуст.

А в третей строке мы присваиваем первому элементу массива «Mass2» в качестве значения другой массив.

Теперь у нас первый элемент массива «Mass2» – это другой массив.

Чтобы получить одно из значений этого массива, нам нужно будет указать два индекса.

Если перед закрывающим тегом php мы пропишем следующее:

echo $Mass2[0][3];

 

То, запустив наш файл, на экране мы увидим цифру «4».

Получается, что мы обращаемся к первому элементу массива «Mass2» (не забывайте, что нумерация элементов в массивах начинается с нуля). Первый элемент – это массив. А далее мы обращаемся к четвертому элементу вложенного массива. Четвертым элементом в нашем случае является цифра «4».

Вот, собственно, Вам и многомерный массив.

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

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

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

Такие индексы называются ключами.

Чтобы Вам было более понятно, давайте приведем простой пример такого массива.

$Mass3['Name']='Anna';
$Mass3['LastName']='Kotelnikova';
echo $Mass3['Name'];

 

Как Вы видите, здесь вместо числовых индексов в квадратных скобках заданы индексы строковые. И обращение к элементу массива также осуществляется при помощи тех же строковых индексов.

В данном случае наш пример выведет на экран слово «Anna» (как Вы, наверное, и сами догадались).

Зачастую такое хранение информации очень удобно. Создаются определенные ассоциации и структурировать, и идентифицировать информацию становится гораздо удобнее.

Тот же самый массив мы можем объявить и другим способом. Вот так:

$Mass3 = array('Name' => 'Anna', 'LastName' => 'Kotelnikova');

 

При помощи инструкции «array» достаточно удобно объявлять многомерные ассоциативные массивы.

Это бывает очень полезно.

Например, у нас есть несколько студентов, и мы хотим хранить информацию о них в ассоциативном массиве. У студентов есть определенные данные, например, имя, фамилия, год рождения и средний балл.

Посмотрите, как можно это реализовать.

$Mass4['Petrov'] = array('Name'=>'Petr', 'Year'=>1986, 'Ball'=> 4.6);
$Mass4['Ivanov'] = array('Name'=>'Ivan', 'Year'=>1984, 'Ball'=> 3.7);
$Mass4['Semenov'] = array('Name'=>'Semen', 'Year'=>1988, 'Ball'=> 4.7);

 

Теперь в нашем массиве «Mass4» находятся 3 студента и у каждого студента есть свои личные данные.

Для того, чтобы нам узнать какие-либо данные какого-либо студента нужно будет указать два ключа.

Давайте, например, запросим и выведем на экран средний балл студента Семенова.

echo $Mass4['Semenov']['Ball'];

 

Как Вы видите, мы указываем два ключа – фамилию в первых квадратных скобках и интересующие данные о студенте (в данном случае средний балл) во вторых квадратных скобках.

В итоге на экране мы увидим значение «4.7», что и является средним баллом Семенова.

В общем-то все просто, но стоит с этим попрактиковаться.

О полезности ассоциативных массивов, я думаю, Вы и сами уже догадались. Это систематизированная информация, которая хранится у Вас в одном элементе – массиве, и к которой Вы можете получать доступ по ключам-ассоциациям. Это гораздо проще и удобнее, чем запоминать числовые индексы. Так что если Вам нужно будет хранить и использовать информацию подобного характера, то ассоциативные массивы Вам очень помогут.

Как получить все ключи и все значения ассоциативного массива

Сейчас я познакомлю Вас с двумя функциями, которые позволяют получить все ключи и все значения ассоциативного массива.

Начнем с ключей.

Давайте выведем все ключи нашего массива «Mass4». Как Вы, наверное, поняли ключами будут являться фамилии наших студентов.

Здесь нам поможет функция «array_keys()».

Нам нужно будет применить эту функцию к массиву «Mass4». Полученный массив значений мы занесем в переменную. А потом при помощи цикла «foreach» (о нем мы поговорим в дальнейших статьях) выведем все значения на экран.

Делается это так:

$Mass4['Petrov'] = array('Name'=>'Petr', 'Year'=>1986, 'Ball'=> 4.6);
$Mass4['Ivanov'] = array('Name'=>'Ivan', 'Year'=>1984, 'Ball'=> 3.7);
$Mass4['Semenov'] = array('Name'=>'Semen', 'Year'=>1988, 'Ball'=> 4.7);
$MassKey = array_keys($Mass4);
foreach ($MassKey as $key){
echo $key . '<br>';	
}

 

В итоге на экране Вы увидите фамилии всех наших студентов, которые в данном случае и являются ключами массива «Mass4».

Подобным же образом можно получить и значения всех элементов массива, только здесь нам нужно будет использовать функцию «array_values».

Для нашего примера многомерного массива в скобках теперь нужно будет указать на просто «Mass4», а, например, «Mass4[‘Petrov’]», так как значения элементов массива «Mass4» являются другие массивы, и если мы укажем в скобках просто «Mass4», то на экране увидим слово Array, выведенное трижды. Три элемента – три массива. Если мы конкретизируем и укажем «Mass4[‘Petrov’]», то получим все сведения о студенте Петрове.

$Mass4['Petrov'] = array('Name'=>'Petr', 'Year'=>1986, 'Ball'=> 4.6);
$Mass4['Ivanov'] = array('Name'=>'Ivan', 'Year'=>1984, 'Ball'=> 3.7);
$Mass4['Semenov'] = array('Name'=>'Semen', 'Year'=>1988, 'Ball'=> 4.7);
$MassValues = array_values($Mass4['Petrov']);
foreach ($MassValues as $key){
echo $key . '<br>';	
}

 

Обязательно попрактикуйтесь и придумайте свои примеры, чтобы лучше понять, как использовать ассоциативные многомерные массивы. Я уверена, в процессе Вам в голову начнут приходить идеи, где это можно применить с пользой. А таких ситуаций очень много.

Слияние массивов.

И напоследок поговорим о слиянии массивов.

Здесь главное запомнить, что слияние ассоциативных массивов и массивов-списков (индексами которых являются числа) происходит по-разному.

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

Допустим, у нас есть 2 ассоциативных массива «Mass1» и «Mass2». Чтобы слить эти 2 массива, нам нужно использовать оператор «+». Результат слияния занесем в массив с именем «Mass3», а потом можно вывести все это на экран, чтобы посмотреть результат.

<?php
$Mass1['One'] = 1;
$Mass1['Two'] = 2;
$Mass2['Three'] = 3;
$Mass2['Four'] = 4;
$Mass3 = $Mass1 + $Mass2;
print_r($Mass3);
?>

 

В итоге, на экране мы увидим следующее:

Array ( [One] => 1 [Two] => 2 [Three] => 3 [Four] => 4 )

 

Для слияния массивов-списков, оператор «+» нам уже не подойдет. Здесь нужно будет использовать функцию «array_merge()». Делается это так:

<?php
$Mass1[] = 1;
$Mass1[] = 2;
$Mass2[] = 3;
$Mass2[] = 4;
$Mass3 = array_merge($Mass1,$Mass2);
print_r($Mass3);
?>

 

И теперь на экране мы увидим вот такой результат:

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )

 

Здесь также следует помнить, что если один из параметров функции «array_merge()» не является массивом, то Вы увидите сообщение об ошибке.

На этом сегодня все. В следующей статье мы поговорим о том, как перебирать элементы массива в циклах и не только.

Надеюсь эта статья была Вам полезна. Жду Ваших комментариев.

А также не забывайте делиться статьей с друзьями при помощи кнопок соц. сетей и подписывайтесь на обновления блога, если еще не подписаны.

Успехов Вам в изучении массивов и до новых встреч.

С Вами, как всегда, была Анна Котельникова. Пока!

Leave a Reply