belarusweb.net
© Петр Романовский Минск, 2016-2017.



belarusweb.net

Основы создания сайтов...

PHP+MySQL >>>

                          Учебник Задачник Справочник

2.6. Массивы

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

echo $m_4[0]." ".$m_4[5]." ".$m_4[6];  //Выведет строку '3 apple 33'	
//echo $m_4[1]; //Сообщит об ошибке, т.к. элемента с таким ключем в массиве нет

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Контрольные вопросы и задания

  1. Дайте определение массиву. Какие массивы называют ассоциативными?
  2. Что означают понятия нетипизированного и динамического массивов?
  3. Как в PHP создаются массивы? Опишите особенности использования ключей элементов массива.
  4. Как осуществляется доступ к элементам массива, а также добавление, изменение значений или удаление элементов массива?

Словарь новых английских слов

boolean [bʊˈlɪən] – логический тип.
integer [ˈɪntɪdʒə] – целое число.
float [fləʊt] – плавать, число с плавающей точкой.
string [strɪŋ] – струна, строка.
array [əˈreɪ] – массив.
object [ˈɒbdʒɪkt] – объект, предмет.
resource [rɪˈsɔːs] – ресурс.
null [nʌl] – отсутствующий, нулевой.
true [truː] – истинный, верный.
false [fɔːls] – ложный, неверный.
number [ˈnʌmbə] – число, количество.
here [hɪə] – здесь, тут.
now [naʊ] – теперь, сейчас.
concatenation [kənkatəˈneɪʃn] – сцепление.
key [kiː] – ключ.
value [ˈvæljuː] – значение.
unset [ʌnˈsɛt] – сброс.

Комментарии (0)
Петр Романовский
1. Приветствуются комментарии, которые содержат дополнения к материалу текущей страницы, а также ваши ответы на вопросы других пользователей.
2. Если вам что-то непонятно - спрашивайте, не забывая написать, что именно и с какого места.
Показаны все комментарии
Чтобы оставить свой комментарий, авторизуйтесь, пожалуйста!    
     
belarusweb.net © Петр Романовский, Минск, 2016-2017.
Связаться с автором
Наверх