Массивы в PHP, или Array

Что такое массив? Если совсем просто — это те же переменные, объединенные под одной «крышей». Или еще одно определение — это переменная с множеством ячеек, т.е. некий такой ящик со множеством отделений, в котором хранятся некие данные.

Давайте сразу разбираться на примерах.

Я сейчас напишу переменную. Какого типа будет эта переменная?

<?php

$data; // Какой тип этой переменной?

?>

У этой переменной будет тип NULL. Хорошо, идем дальше.

Какой тип будет у этой переменной?

<?php

$data = 10; // Тип?

?>

А у этой переменной будет тип INTEGER (число).

А если я напишу так:

<?php

$data[]; // Какой тип?

?>

ArrayА здесь будет тип Array или массив PHP. Квадратные скобки после переменной указывают на ячейку этого массива. Соответственно я могу в этот массив записать значения:

<?php

$data[] = ‘Ser’;

$data[] = ‘root’;

$data[] = ‘54321’;

$data[] = 40;

$data[] = true;

?>

Итак, мы получили массив из пяти (5) ячеек. И сразу же применим функцию, которая считает длину массива PHP или количество ячеек в массиве. Называется она count(), в которую передается имя массива:

<?php

$data[] = ‘Ser’;

$data[] = ‘root’;

$data[] = ‘54321’;

$data[] = 40;

$data[] = true;

echo count($data); // 5

?>

К каждой ячейки можно как-то обращаться. Как? Здесь правило такое: когда php «видит», что ячейке присваивается какое-то значение, то он эту ячейку автоматически нумерует, присваивает ей индекс наибольший следующий за наибольшим. Не забываем, что нумерация начинается с нуля. Соответственно, чтобы мне вывести Ser мне нужно записать так:

<?php

$data[] = ‘Ser’;

$data[] = ‘root’;

$data[] = ‘54321’;

$data[] = 40;

$data[] = true;

echo $data[0]; // Ser

?>

Давайте вернемся к определению массива. Я считаю, что лучше всего определять массив PHP, как множество переменных под одной «крышей». Почему? Обратите внимание, если я напишу вот так: echo getType($data) — то мне вернется тип Array (массив), а если я напишу echo getType($data[0]) — мне вернется String (строка). Т.е. $data[0] — это уже самостоятельная переменная. Вот и получается, что массив PHP — это переменные внутри другой переменной.

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

Теперь давайте рассмотрим несколько полезных функций для массивов. Первая функция, которая выводит структуру массива PHP — это функция print_r(имя массива). Чтобы вывести структуру массива, можно записать так: echo print_t(имя массива). У этой функции есть два недостатка — мы не можем увидеть какие типы данных лежат в массиве и она не показывает длину массива. Например 40 — это строка или число? А ведь может быть, что и то или другое.

Так вот, если нужно более подробно рассмотреть массив, то для этого используется другая функция, которая называется var_dump(имя массива). Это тоже самое, что print_r(), только круче. Что делает функция var_dump()? Она показывает, во первых длину массива PHP, во вторых какой тип данных лежит в каждой ячейки.

Идем дальше. Смотрите, я также могу пронумеровать ячейки массива и в ручную:

<?php

$data[0] = ‘Ser’;

$data[1] = ‘root’;

$data[2] = ‘54321’;

$data[3] = 40;

$data[4] = true;

?>

А могу еще и с единицы нумерацию начать:

<?php

$data[1] = ‘Ser’;

$data[2] = ‘root’;

$data[3] = ‘54321’;

$data[4] = 40;

$data[5] = true;

?>

Тогда вопрос. Посмотрите на этот код:

<?php

$data[11] = ‘Ser’;

$data[2] = ‘root’;

$data[] = ‘54321’;

$data[45] = 40;

$data[] = true;

?>

Какие номера будут у пустых ячеек? PHP читает массив сверху вниз, поэтому, когда он подойдет к первой пустой ячейке, наибольшей будет ячейка под номером 11, соответственно первой пустой ячейке он присвоит номер 12. А вот следующая пустая ячейка будет идти за наибольшим номером 45, соответственно второй пустой ячейке он присвоит номер 46. Вот как это будет выглядеть:

<?php

$data[11] = ‘Ser’;

$data[2] = ‘root’;

$data[12] = ‘54321’;

$data[45] = 40;

$data[46] = true;

?>

Обратите внимание, что эти номера или индексы ни на порядок, ни на количество ячеек не повлияли вообще никак. Т.е. получается, что эти индексы — это просто указатель для нас, чтобы мы могли как-то обратиться к данным в этих ячейках.

То как мы сейчас создавали массивы, так они конечно создаются, но создаются редко. Создавать массив можно и другим путем, с помощью функции array(). Сейчас я создам такой же массив PHP, только другим вариантом, каким и нужно делать:

<?php

$data = array();

?>

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

<?php

$data = array(‘Ser’, ‘root’, ‘54321’, 40, true);

?>

А что если я теперь захочу пронумеровать ячейки массива PHP со значением ‘Ser’ или любую другую? До этого все было просто — в квадратных скобках мы указывали номер. Как быть здесь? А здесь не сложнее, чем было. Всего лишь нужно написать номер перед ячейкой, например 10 и поставить вот такую стрелку =>. Так как PHP позволяет все это записать более красиво, я cделаю вот так:

<?php

$data = array(

10=>’Ser’,

‘root’,

100=>’54321′,

40,

true

);

?>

Давайте представим, что нам необходимо вывести значения элементов массива. Конечно для этого существуют функции, которые мы дальше будем рассматривать. Но прежде чем к ним переходить, я хочу показать вам парочку способов вывода массива PHP, которые вы наверняка где-нибудь встретите.

Итак, опять же, у нас есть вот такой массив:

<?php

$data[‘name’] = ‘Ser’;

$data[‘login’] = ‘root’;

$data[‘password’] = ‘54321’;

$data[‘age’] = 40′;

?>

Предположим, что у этого массива есть некий указатель или курсор, который изначально стоит на первом элементе, то есть на элементе $data[‘name’] = ‘Ser’. Этот указатель или курсор мы, образно говоря, можем передвигать по всему массиву, вследствие чего, мы получаем или выводим значения этого массива. Функция, которая возвращает указатель элемента массива называется current():

<?php

echo current($data); // Выведет Ser

?>

Далее я хочу передвинуться на следующую ячейку и вывести ее значение. Для этого используется функция next():

<?php

echo next($data); // Выведется root

?>

Теперь, если я хочу вывести текущий указатель на массиве, я использую опять current():

<?php

echo next($data); // Выведется root

echo current($data); // Выведет root

?>

Теперь я опять хочу передвинуться, но назад к значению Ser. Для этого мне надо использовать функцию prev():

<?php

echo prev($data); // Выведет Ser

?>

Если я опять после prev($data) напишу current($data), мне выведется Ser.

Для того, чтобы передвинуться в самый низ массива PHP, нужно использовать функцию end():

<?php

echo end($data); // Выведет 40

?>

После того, как мы оказались в самом низу массива, я хочу сразу подняться на его первый уровень. Для этого я использую функцию reset($data).

Давайте обобщим наш код, чтобы было более понятно:

<?php

$data[‘name’] = ‘Ser’;

$data[‘login’] = ‘root’;

$data[‘password’] = ‘54321’;

$data[‘age’] = 40′;

echo current($data); // Ser

echo next($data); // root

echo current($data); // root

echo prev($data); // Ser

echo current($data); // Ser

echo end($data); // 40

echo reset($data); // Ser

?>

Чтобы получить ключ массива, необходимо написать функцию key($data). Функция выведет ключ того элемента массива, на котором мы в данный момент находимся.

То есть, вот таким образом мы можем перемещаться по массиву в разных направлениях.

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

Оставить комментарий