html.okpython.net
HTML и CSS для начинающих

PHP :: Массивы

Определение массива в PHP

Перечисленные выше четыре типа данных относятся к скалярным (простым) типам данных. Что касается массивов, то они представляют смешанный тип данных, к которому также относятся объекты (их мы расмотрим в отдельном параграфе).

Массив (от англ. array) – это упорядоченный набор значений, которые объединены общим именем. Под именем массива подразумевается имя переменной, которой присваивается массив, а сами значения называются элементами массива. Доступ к ним может быть получен при помощи уникального целочисленного или строкового индекса, который присваивается каждому элементу массива.

Типы массивов в PHP

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

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

Также отметим, что в PHP массивы являются:

  • нетипизированными – элементы одного и того же массива могут относиться к разным типам данных, включая другие массивы, например, [5, "Вася", NULL, ["фамилия", "город"], 34.5];
  • динамическими – объявлять фиксированный размер массива не нужно, а удалять или добавлять новые элементы можно в любое время по мере необходимости.

Создание массивов в PHP

Для создания массивов используется специальная языковая конструкция array(), в которой в качестве параметров через запятую указываются пары key=>value (т.е. ключ=>значение), или квадратные скобки, которые заменяют конструкцию array(), представляя собой более короткий синтаксис определения массивов. После создания массивов доступ к его элементам может быть получен по их ключам, которые необходимо указывать в квадратных скобках после имени массива (см. пример №1).

PHP Результат htmlCodes
<?php

// Создали одномерный массив с двумя элементами 
//и присвоили его переменной 
$m_1=array( 
	'country'=>'Belarus',   
	'city'=>'Minsk'  	    
); //Не забываем про точку с запятой в конце инструкции!

//Выведет строку 'Belarus'
echo $m_1["country"]."<br>"; 
	  
// Создали одномерный массив при помощи квадратных скобок 
$m_2=[ 
	'country'=>'Russia', 	 
	'city'=>'Moscow' 	  	 
];  

//Выведет строку 'Moscow'
echo $m_2["city"]."<br>"; 	 

?> 

Пример №1. Создание массивов

При создании массивов или добавлении новых элементов разрешается не указывать ключи элементов. В таком случае при создании массивов интерпретатор PHP будет нумеровать элементы начиная с нуля, а при добавлении новых элементов в массив использовать предыдущее наибольшее значение числового ключа, но увеличенное на единицу. Также разрешается указывать ключи только для некоторых элементов массива, остальные будут пронумерованы автоматически. Отметим, что если несколько значений будут использовать одинаковый ключ, то использоваться будет только последнее из них, а все остальные значения будут перезаписаны (см. пример №2).

PHP Результат htmlCodes
<?php

//Не указываем ключи вообще 
$m_1=[2,4,76];				  	

//Выведет '2 76'
echo $m_1[0]." ".$m_1[2]; 
//Сообщит об ошибке, т.к. в массиве присутствует
//только три элемента с ключами 0, 1 и 2
echo $m_1[3];			  		

//Указали ключ первого элемента, а для второго и третьего элементов 
//интерпретатор автоматически установит числовые ключи, равные 0 (т.к. 
//других числовых ключей в массиве пока нет) и 1 (на единицу больше, чем 0)
$m_2=["имя"=>"Вася",8.56,100]; 
//Выведет строку 'Вася 8.56 100'
echo $m_2["имя"]." ".$m_2[0]." ".$m_2[1]; 				

//Указали числовой ключ первого элементаа для второго элемента 
//(строка состоящая из пробела) интерпретатор автоматически 
//установит числовой ключ, равный 3 (2+1) 
$m_3=[2=>"php",' ',"версия"=>'7.0.0']; , 

//Выведет строку 'php 7.0.0'
echo $m_3[2].$m_3[3].$m_3["версия"];   	
//Сообщит об ошибке, т.к. нумерация в массиве начинается с 2
echo $m_3[1]; 

//Указали одинаковые ключи, поэтому доступно будет только
//последнее значение, т.е. "apple", кроме того, 
//числовой индекс последнего элемента будет равен 6 (5+1) 
$m_4=[3,5=>"orange",5=>"apple",33]; 	 
			
//Выведет строку '3 apple 33'
echo $m_4[0]." ".$m_4[5]." ".$m_4[6];   	
//Сообщит об ошибке, т.к. элемента с таким ключем в массиве нет
echo $m_4[1]; 

/* Не забываем, что при конкатенации со строкой значения любого типа 
будут также преобразованы в строку!!! */

?>

Пример №2. Особенности использования ключей элементов массива

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

  • строки, содержащие целое число, преобразуются к целочисленному типу integer, например, ключ со значением '3' будет сохранен со значением 3, хотя значение '03' не будет преобразовано, т.к. оно не является верной записью десятичного целого числа;
  • вещественные числа (тип float) также преобразуются к целочисленному типу, при это никаких округлений не производится, интерпретатор просто отбрасывает дробную часть; например, ключ со значением 4.9 будет сохранен со значением 4;
  • к целочисленному типу преобразовываются и логические значения (тип bool), например, ключ со значением true будет сохранен со значением 1, а false – со значением 0;
  • в качестве ключа можно использовать и значение null (тип null), но оно, опять же, будет преобразовано интерпретатором в пустую строку, в результате чего ключ будет сохранен со значением "" (пустая строка);
  • Массивы (тип array) и объекты (тип object) в качестве ключей использовать нельзя.

Доступ к элементам массива

Как было сказано выше, для доступа к элементу массива нужно указать его ключ в квадратных скобках после имени массива. Если элементом массива является другой массив, то для доступа к значению такого элемента-массива следует применять еще одни квадратные скобки с указанным в них ключем (см. пример №3). Кстати, вместо квадратных скобок для доступа к элементам массива допускается использование фигурных скобок { и }, но мы будем использовать только квадратные скобки.

PHP Результат htmlCodes
<?php

//Создаем массив
$m_1=[
	"apple",
	"my_array"=>[4,12],
	"building"=>'house'
];  														 

//Выведет строку 'apple'
echo $m_1[0].'<br>';					 		
//Выведет строку 'house'
echo $m_1["building"].'<br>';		 	
//Выведет '4'
echo $m_1["my_array"][0].'<br>';  

?> 

Пример №3. Доступ к элементам массива

Добавление элементов в массив

Для добавления элемента в массив или его изменения также необходимо указать новый или существующий ключ в квадратных скобках после имени массива, после чего присвоить требуемое значение. В результате будет либо добавлен новый элемент в массив, если элемента с таким ключем не существовало, либо изменено значение существующего элемента с таким ключем (см. пример №4). Более того, при добавлении нового элемента в массив можно вообще не указывать ключ, а просто добавить пустые квадратные скобки (фигурные скобки применять не разрешается).

PHP Результат htmlCodes
<?php

//Создаем массив 
$m_1=array(
	//Нумерация элементов начинается с 3
	3=>"fruit",  
	//Значит данный элемент будет иметь ключ со значением 4
	33,			 		 
	"number"=>7
);   				 
	
//Добавили в массив новый элемент	со значением ключа 0
$m_1[0]=24;  	 
//Добавили в массив новый элемент, которому интерпретатор присвоит 
//ключ со значением 5 (на 1 больше максимально существующего, а это 4)
$m_1[]="one";  
//Добавили элемент в массив со значением ключа "city"
$m_1["city"]="Minsk"; 
//Изменили значение элемента массива
$m_1["number"]=88;    

//Выведет строку '24'
echo $m_1[0].'<br>';  	 
//Выведет строку 'one'
echo $m_1[5].'<br>'; 		 
//Выведет строку 'Minsk'
echo $m_1["city"].'<br>';
//Выведет '88'
echo $m_1["number"]; 	   

/* Напомним, что оператор echo выводит строки, 
хотя мы часто не указываем этого явно */

?> 

Пример №4. Добавление или изменение элементов массива

Удаление элементов массива

Для удаления пары key=>value или всего массива следует использовать функцию unset(). Также следует помнить, что массив представляет собой набор значений, которые присвоены переменной. Поэтому, если этой переменной присвоить другое значение, например, число или строку, то массив будет удален, а в переменной будет храниться новое значение (см. пример №5).

PHP Результат htmlCodes
<?php

//Создаем массив 
$m_1=array(
	//Нумерация элементов начинается с 3
	3=>"fruit",   
	//Значит данный элемент будет иметь ключ со значением 4
	33,						
	"number"=>7
);   					
	
//Удалили элемент из массива
unset($m_1[3]);  	 		
//Интерпретатор выведет ошибку, т.к. такого 
//элемента больше в массиве нет
echo $m_1[3].'<br>'; 	

//Удалили весь массив
unset($m_1);  	
//Интерпретатор выведет ошибку о том, 
//что такой переменной не существует								
echo $m_1; 			

//Создаем массив из двух элементов
$my_array=[2,45];			
//Присваиваем переменной новое значение, при этом массив 
//с именем "my_array" будет удален
$my_array=5; 					
//Выведет '5'
echo $my_array;  					

?> 

Пример №5. Удаление элементов массива и самого массива

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

Быстрый переход к другим страницам