Массивы PHP-это переменные, в которых хранятся множество значений и доступ к ним можно получить через уникальные ключи: нумерованные или именованные. И в сегодняшнем уроке мы подробно рассмотрим из чего они состоят (их синтаксис и типы) и как с ними работать.
Создание индексированного массива
Для создания массива необходимо прописать квадратные скобки или array с круглыми скобками и присвоить их переменной. Но это создаст лишь пустой массив, чтобы он не был пустым пропишите в квадратных или круглых скобках значения через запятую, смотрите следующие примеры:
<?php
//создание массива с круглыми скобками
$my_array_1=array("красный","желтый","синий");
print_r($my_array_1);
//создание массива с квадратными скобками
$my_array_2=["зеленый","черный","розовый"];
print_r($my_array_2);
?>
Как видите из примера мы создали два индексированных массива с тремя значениями и использовали разную конструкцию создания. В первой конструкции использовали ключевое слово array с круглыми скобками, а во втором прописали всего лишь квадратные скобки.
Если вы попробуете выводить массив через «echo», то на экран выйдет лишь слово «Array». Поэтому лучше всего использовать для просмотра внутренности массива встроенную функцию PHP «print_r».
В индексированном массиве каждому значению автоматически создается свой уникальный нумерованный ключ начинающийся с нуля и для вывода конкретного значения можно воспользоваться этими ключами:
<?php
$index_array=["зеленый","черный","розовый"];
echo "Мой кофе ".$index_array[1]."<br>"; //Выводит «Мой кофе черный»
echo "У моего шарфа ".$index_array[0]." цвет <br>"; //Выводит «У моего шарфа зеленый цвет»
echo "Мне нравится ".$index_array[2]." оттенок <br>"; //Выводит «Мне нравится розовый оттенок»
?>
Так как отсчет ключей начинается с нуля мы использовали ключи ( 0, 1, 2 ), чтобы вывести конкретные значения ("зеленый", "черный", "розовый") из массива.
А как быть, если нам нужно вывести все элементы массива? Тут нам помогут циклы, но можно конечно каждого в отдельности вывести через ключи, как в вышепоказанном примере. Но если массив большой, то это тяжело. Поэтому использование цикла значительно облегчит нам задачу.
<?php
$index_array=["Jeep","Kia","Dodge","Lexus","Mazda","Renault"];
$my_auto = "";
foreach($index_array as $key => $auto){
$my_auto .= "Ключ — ".$key.", значение — ".$auto.";<br>";
}
echo "Наши марки машин: ".$my_auto;
?>
В данном примере мы провели через цикл «foreach» наш массив «$index_array». И вложив дополнительные значения присвоили все эти данные вместе с ключами «$key» и значением «$auto» другой переменной «$my_auto». После чего вывели через «echo» на экран.
В массив можно добавлять новые данные:
<?php
$index_array=["клиент_один","клиент_два","клиент_три"];
print_r($index_array);
$index_array[3]="клиент_четыре"; //Добавили новое значение
echo "<br>У нашего массива появились новые данные: ";
print_r($index_array);
?>
В этом примере мы добавили новый элемент с ключом «3» и значением «клиент_четыре». Таким образом вы можете прописать любой ключ для значения, например, вместо 3 установить 25. И с этим ключом потом извлечь соответствующее значение из массива.
Необходимо запомнить то, что ключи должны быть уникальными иначе последняя копия перезапишет предыдущие значения.
Создание ассоциативного массива
В PHP при создании ассоциативного массива вместо нумерованных используются именованные ключи. Ассоциативный отличается от индексированного массива тем, что нужно прописывать его ключи вместе с оператором «=>».
<?php
$assoc_array=["Fruit"=>"Яблоко","Фрукт"=>"Гранат",true=>"Мандарин",1=>"Арбуз"];
echo "Я купил в магазине ".$assoc_array["Fruit"]."<br>";
echo "Я купил в магазине ".$assoc_array["Фрукт"]."<br>";
echo "Я купил в магазине ".$assoc_array[true]."<br>";
echo "Я купил в магазине ".$assoc_array[1]."<br>";
?>
Как видно из примера в ассоциативных массивах можно прописывать разные типы ключей и все они будут работать. Обратите внимание на «$assoc_array[true]», который выводит «Арбуз». Это произошло потому что «true» возвращает 1, в результате два элемента с одинаковыми ключами и последний элемент перезаписал предыдущее значение «Мандарин».
Чтобы вывести все ключи и значения можно использовать тот же цикл «foreach»:
<?php
$assoc_array=["Мандарины"=>390,"Гранаты"=>670,"Киви"=>550];
$my_fruit = "";
foreach($assoc_array as $key => $weight){
$my_fruit .= "Мои — ".$key." весят — ".$weight." грамм;<br>";
}
echo "Наш фруктовый массив: <br>".$my_fruit;
?>
Создание многомерного массива
Главным отличием многомерного массива от одномерного является то, что в нем есть другие массивы. И они могут иметь не одну глубину: двумерные, трехмерные и так далее. Для того чтобы добраться до их значений необходимо прописать два ключа (если двумерный) или три ключа (если трехмерный). Но чем глубже глубина массива, тем сложнее ими управлять. Поэтому чаще пользуются не более трех уровней вложенности.
В следующем примере мы создадим двумерный массив:
<?php
$multi_array=[
["Daewoo","Fiat"],
["Citroen","Hyundai"],
["Ford","Infiniti"]
];
echo "Мне нравиться машина ".$multi_array[1][0]; //Выводит «Мне нравиться машина Citroen»
?>
Здесь мы прописали первым ключом «[1]» позицию нужного массива, а вторым ключом указали позицию его элемента «[0]».
Пример с ассоциативными ключами:
<?php
$multi_assoc = array(
"auto_1" => array("brand_1" => "Daewoo","brand_2" => "Chevrolet","brand_3" => "Fiat"),
"auto_2" => array("brand_1" => "Infiniti","brand_2" => "Honda","brand_3" => "Cadillac")
);
echo "Мне нравиться машина ".$multi_assoc["auto_1"]["brand_2"]; //Выводит «Мне нравиться машина Chevrolet»
?>
Далее рассмотрим как вывести все элементы двумерного массива:
<?php
$multi_array=[
["Audi","Fiat","Ferrari"],
["Chevrolet","Hammer","Bentley"],
["Cadillac","Honda","Ford"]
];
$my_auto = "";
foreach($multi_array as $k => $array_auto){
foreach($array_auto as $key => $brand){
$my_auto .= "Ключ массива — ".$k."; Ключ значения — ".$key."; Марка машины — ".$brand.";<br>";
}
}
echo $my_auto;
?>
Тут мы тоже использовали цикл «foreach» и причём дважды. Первым циклом мы прошлись по массивам, а вторым вывели их значения.
Пример вывода с конкретным ключом:
<?php
$multi_assoc = array(
"auto_1" => array("brand_1" => "Lexus","brand_2" => "Chevrolet"),
"auto_2" => array("brand_1" => "Mazda","brand_2" => "Jeep"),
"auto_3" => array("brand_1" => "Infiniti","brand_2" => "Renault")
);
$my_auto = "";
foreach($multi_assoc as $k => $array_auto){
$my_auto .= "Ключ массива — ".$k."; Марка машины — ".$array_auto["brand_1"].";<br>";
}
echo $my_auto;
?>
В данном примере мы вывели все марки машин с ключом «brand_1» указав значение «$array_auto».
Если вы просто хотите узнать сколько элементов в массиве, то можно воспользоваться функцией «count» (вернет длину). Для многомерных массивов можно установить второй параметр «COUNT_RECURSIVE».
<?php
$index_array=["зеленый","черный","розовый"];
echo count($index_array); //Для одномерных
echo "<br>";
$multi_array=[
["Audi","Fiat","Ferrari"],
["Chevrolet","Hammer","Bentley"],
["Cadillac","Honda","Ford"]
];
echo count($multi_array,COUNT_RECURSIVE); //Для многомерных
?>
На этом данный урок «Массивы PHP» подошёл к концу. Свои вопросы по нему можете написать в комментариях.