Что такое массив? Если совсем просто — это те же переменные, объединенные под одной «крышей». Или еще одно определение — это переменная с множеством ячеек, т.е. некий такой ящик со множеством отделений, в котором хранятся некие данные.
Давайте сразу разбираться на примерах.
Я сейчас напишу переменную. Какого типа будет эта переменная?
<?php
$data; // Какой тип этой переменной?
?>
У этой переменной будет тип NULL. Хорошо, идем дальше.
Какой тип будет у этой переменной?
<?php
$data = 10; // Тип?
?>
А у этой переменной будет тип INTEGER (число).
А если я напишу так:
<?php
$data[]; // Какой тип?
?>
А здесь будет тип 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. В дальнейшем мы с вами будем с ними сталкиваться и рассматривать многие функции, которые облегчают нам работу с этими массивами.
jcover.ru
<?php
$fruits = array ( "fruits" => array ( "a" => "orange",
"b" => "banana",
"c"
" => array ( 1,
2,
3,
&nbs.
bsp; 6
),
"holes" => array ( "first",
&.
r: #DD0000">"third"
)
);
// Some examples to address values in the array above
echo $fruits["holes"][5]; // prints "second"
echo $fruits["fruits"]["a"]; // prints "orange"
unset($fruits["holes"][0]); // remove "first"
// Create a new multi-dimensional array
$juices["apple"]["green"] = "good";
?>
php.net
Что такое массив PHP?
Начать данную тему хотелось бы с отречённых примеров. Допустим, мы рассматриваем какого-либо человека. У него есть имя, фамилия, адрес, телефон, пол, рост, цвет глаз и так далее. Информацию по всем этим пунктам можно отнести к массиву данных о человеке.
Массив может быть другого типа, без какой-либо конкретики по пунктам. Будет только тема. Допустим, это web-прграммирование. А в качестве элементов будут языки — HTML, CSS, JavaScript, PHP, MySQL. Всего 5 элементов.
Исходя из последнего примера предположим массив:
web-программирование
1. HTML
2. CSS
3. JavaScript
4. PHP
5. MySQL
Теперь смотрим на данный пример и анализируем основные понятия.
Массив в PHP — это набор последовательно расположенных однотипных данных, связанных общей тематикой, число элементов которого фиксировано.
Массив в данном примере будет называться web-программирование.
У каждого элемента есть своё порядковое место, идентификатор.
Индекс (ключ массива) — либо порядковый номер, либо текстовое значение, по которому можно идентифицировать элемент.
Индексами в примере выше будут числовые значение от 1 до 5. При обращении к индексу 2 мы увидим CSS.
Пример массива в PHP
Теперь давайте рассмотрим вышеуказанный пример в синтаксисе PHP, а не русского языка. Допустим массив будет называться короче — web. В квадратных скобках [] будет вставлять индекс.
Давайте рассмотрим простой пример массива, где в значении индексов будут числовые значения, а создавать массив будем так, словно переменным присваиваем значения.
$web[1]=’HTML’;
$web[2]=’CSS’;
$web[3]=’JavaScript’;
$web[4]=’PHP’;
$web[5]=’MySQL’;
$web; // данная переменная содержит массив с 5-ю элементами
// чтобы вывести один из элементов массива достаточно указать индекс в массиве
echo $web[4]; // выведет PHP
Одномерный массив
ИНДЕКСНЫЙ МАССИВ
Выше, с web-программированием, мы рассмотрели как раз пример одномерного массива.
Таким способом он создаётся редко. Он скорее наглядно показывает структуру массива. Чаще прибегают к другому методу.
$web=array(‘HTML’,’CSS’,’JavaScript’,’PHP’,’MySQL’);
echo $web[0]; // выведет ‘HTML’
echo $web[2]; // выведет ‘JavaScript’
echo $web[3]; // выведет ‘PHP’
Если Вы хотите задать значения индекса, то их надо указать следующим образом. Знак => является указателем для присваивания индекса значению или наоборот значению индекс.
$web=array(1=>’HTML’,2=>’CSS’,3=>’JavaScript’,4=>’PHP’,5=>’MySQL’);
echo $web[1]; // HTML
echo $web[2]; // CSS
echo $web[4]; // PHP
В примере отсчёт начинается с 1. Переменная с индексом 0 вследствие этого пустая.
В следующем примере мы не будем указывать индекс.
$day[]=’Понедельник’; // индекс 0
$day[]=’Вторник’; // 1
$day[]=’Среда’; // 2
$day[]=’Четверг’; // 3
$day[]=’Пятница’; // 4
Можно проследить, что происходит последовательное заполнение с нуля.
АССОЦИАТИВНЫЙ МАССИВ
Зачастую возникает потребность в создании буквенного индекса для элемента массива. Как я упоминал выше, такой индекс должен состоять из латинских букв, а имя должно быть заключено в кавычки. Рассмотрим на примере человека.
$user[‘nick’]=’Logic’;
$user[‘name’]=’Павел’;
$user[‘age’]=’25’;
$user[‘sex’]=’Мужской’;
$user; // переменная $user содержит массив с 4-мя элементами с буквенными индексами
// выводим элемент массива, указывая его буквенный индекс
echo $web[‘name’]; // выведет ‘Павел’
Как видите, всё достаточно просто. Только значение индекса закавычиваем.
Двумерный массив
Если Вы пропустили первую часть с Одномерным массивом, то настоятельно советую прочитать.
Если говорить проще, то это массив в массиве. То есть элементов большого массива является другой. Подобные массивы очень тормозят работу скрипта, загружая оперативную память, поэтому для быстрой обработки подобных групп данных созданы Базы Данных ( Что такое База данных? ), но о ней позже. Давайте разберём пример двумерного массива.
<?php
// массив с названиями Частей Света
$m = array(‘Европа’,’Азия’,’Африка’,’Америка’,’Австралия и Океания’);
// массив с названиями Стран
$s = array(‘Россия’,’Украина’,’Беларусь’,’Казахстан’);
// массив с названиями Столиц
$с = array(‘Москва’,’Киев’,’Минск’,’Астана’);
// создаём двумерный массив География
$geography = array($m, $s, $с);
?>
Во включенных массивах, как Вы обратили внимание, может быть разное количество элементов. Из части про одномерные массивы следовало, что у каждого элемента массива может быть индекс. Так давайте для каждого включённого массива присвоим своё значение.
Для этого расширим последнюю строчку и напишем её следующим образом.
$geography = array(‘Части Света’=>$m, ‘Страны’=>$s, ‘Столицы’=>$с);
Функции работы с массивами php
Foreach — циклическая функция для работы с массивами, в которой количество циклов равно количеству элементов массива.
Имеет следующий вид.
Код PHP
foreach (массив as $ключ=>$значение)
команды;
Ну и сразу пример работы
<?php
// создаём массив со знаменитыми IT
$names["Ритчи"] = "Деннис";
$names["Томпсон"] = "Кен";
$names["Гейтс"] = "Билл";
$names["Джобс"] = "Стив";
foreach ($names as $key => $value) {
echo "$value $key";
}
?>
На экран скрипт выведет
Деннис Ритчи
Кен Томпсон
Билл Гейтс
Стив Джобс
Count — функция, возвращающая количество элементов в массиве.
echo count($names); // в нашем примере с IT вернёт значение 4
Sort — функция, сортирующая элементы массива. Удобна в случае числовых значений индекса.
Arsort — функция, сортирующая элементы массива в обратном порядке.
sort($names); // сортирует по порядку. Удобно если в Индексе числа
arsort($names); // сортировать в обратном порядке. То есть по индексам элементы будут в порядке 3, 2, 1, 0
Unset — функция, удаляющая элемент массива.
unset($massiv[2]); // удаление элемента массива с индексом 2
unset($massiv); // удаление массива целиком
Array_search — функция поиска в массиве.
Урок 7. Массивы в PHP
Имеет два аргумента. Проще говоря, имеет вил array_search(‘что’, где)
$animals[1]=’dog’;
$animals[2]=’cat’;
$animals[3]=’bird’;
echo array_search(‘cat’,$animals); // выведет индекс элемента — цифру 2
Shuffle — функция, которая перемешивает ключи значений массива.
shuffle($animals); // выстроит элементы в случайном порядке
Спасибо за внимание!
steptosleep.ru
Объявление массива без инициализации
$data = array();
Объявление массива с инициализацией
Пусть, например, мы хотим хранить в ассоциативном массиве $textOptions некие параметры шрифта, а в массиве $days с целочисленными ключами — названия дней недели. Их можно объявить с инициализацией ряда элементов, а потом при необходимости добавлять новые элементы.
$textOptions = array( ‘font-family’=>’Arial’ , ‘color’=>’red’ , ‘font-size’=>12 );
$days = array( 0=>’Monday’ , 1=>’Tuesday’);
или
$days = array( ‘Monday’,’Tuesday’);
Добавление элементов в массив
В определенные выше массивы можно добавлять элементы:
$textOptions[‘background-color’] = ‘#EEEEEE’;
$textOptions[‘border’] = ‘green dotted 3px’;
$days[2] = ‘Wednesday’;
$days[3] = ‘Thursday’;
В случае массива с целочисленными ключами ключи можно не указывать:
$days[] = ‘Friday’;
$days[] = ‘Suturday’;
$days[] = ‘Sunday’;
При этом значения ключам присваиваются последовательно, начиная со значения, на единицу большего уже существующего максимального ключа.
Примеры и примечания
Для перебора всех элементов массива очень удобно использовать оператор foreach. Определим такие (кстати, многомерные) массивы:
$student[‘Mitina’] = array(‘name’=>»Maria», ‘age’=>19);
$student[‘Borisova’] = array(‘name’=>»Alexandra», ‘age’=>19);
$teacher[‘Zakharkina’] = array(‘name’=>»vvz», ‘age’=>’NA’);
$teacher[‘Pankratov’] = array(‘name’=>»pan», ‘age’=>’NA’);
и выведем значения с помощью операторов
foreach ( $student as $k=>$v ) { echo "<b>$k</b><br>"; echo $v['name']." (".$v['age']." years)<p>"; };
Вот результат:
Mitina
Maria (19 years)
Borisova
Alexandra (19 years)
Применять для вывода всего массива оператор «echo» бессмысленно, ибо выводится строка «Array». Выводить можно конкретный элемент массива:
операторы PHP |
результат |
echo $student[‘Mitina’]; |
Array |
echo $student[‘Mitina’][‘name’]; |
Maria |
foreach ( $student['Mitina'] as $k=>$v ) { echo "$k : $v<br>"; };
|
name : Maria age : 19 |
Попробуем присвоить $student[«Mitina»] = $student[«Borisova»]; и вывести результат:
echo $student[«Mitina»][«name»] :
Alexandra
И присваивание $student[«Mitina»] = $teacher[«Zakharkina»]; работает. Собственно, почему бы и нет?
Вот результат вывода echo $student[«Mitina»][«name»]; :
vvz
А если применить оператор присваивания не к элементу массива, а ко всему массиву? Например, попробуем так:
$student = $teacher;
и выведем результат: echo $student[«Zakharkina»][«age»];
NA
vvz.nw.ru
Как и большинство языков программирования PHP имеет возможности работать с массивами. Массив — это специальный тип переменных, который может содержать множество значений одновременно, доступных через одно имя переменой. Массив очень удобно использовать при работе с большим количеством данных (таких, как записи в базе данных), или групп значений, взаимосвязанных друг с другом.
В данном уроке вы узнаете:
- Как работают массивы PHP
- В чем заключается разница между индексированными и ассоциированными массивами
- Как создавать массивы в PHP скриптах
Как работают массивы
Как уже упоминалось выше, массив — это переменная, которая может содержать более, чем одно значение. Несколько фактов о массивах PHP:
- Массив может содержать любое количество значений, и в том числе ни одного значения.
- Каждое значение в массиве называется элемент.
- К каждому элементу можно получить доступ с помощью индекса, который может быть числовым или строчным значением. Каждый элемент в массиве имеет свой собственный уникальный индекс.
- Элемент может хранить любой тип переменных, например, целое число, строку или логическое значение. Можно смешивать типы значений в массиве — например, первый элемент может содержать целое число, второй элемент может содержать строку и так далее.
- Длина массива — это количество элементов в массиве.
- Значения элементов массива сами могут быть массивами. Таким образом можно создать многомерный массив.
Преимущества массивов
Массивы PHP имеют множество преимуществ, включая следующие:
- Ими легко манипулировать. Легко добавить или удалить элементы в массив, так же как и прочитать или изменить значение элемента.
- Легко работать со множеством значений одновременно. Можно легко организовать цикл по всем элементам массива, читая или изменяя значение каждого элемента.
- PHP имеет много удобных функций для обработки массивов. Например, вы можете сортировать элементы, искать определенное значение или индекс, объединять массивы вместе.
Индексированные и ассоциированные массивы
PHP работает с двумя типами массивов:
- Индексированные массивы имеют числовые индексы. Обычно индекс в индексированных массивах начинается с нуля, таким образом первый элемент имеет индекс
0
, второй — индекс 1
, и так далее. Обычно такие массивы используются для хранения набора данных в определенном порядке.
- Ассоциированные массивы имеют строчные индексы. Например, один элемент ассоциированного массива может иметь индекс
"name"
, а другой элемент будет иметь индекс "age"
. Порядок элементов обычно не важен. Ассоциированные массивы используются в случаях, когда нужно хранить записи данных, как при использовании базы данных.
В действительности PHP не имеет внутренних различий между индексированными и ассоциированными массивами. Можно даже смешивать числовые и строчные индексы в одном массиве, если нужно. Однако проще считать, что индексированные и ассоциированные массивы являются различными типами массивов. Тем более, что много функций PHP разработаны для обработки либо индексированных, либо ассоциированных массивов.
Ассоциированные массивы иногда называются хэш, а их индексы часто называют ключами.
Как создать массив в PHP
В скрипте PHP создать массив очень просто. Для этого используется конструкция array()
:
$myArray = array( значения );
Чтобы создать индексированный массив, просто перечислите значения внутри скобок, разделяя их запятой. Следующая строка создает индексированный массив с именами режиссеров и присваивает массиву имя $directors
:
$directors = array( "Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang" );
При создании индексированного массива PHP автоматически назначает индекс каждому элементу. В выше приведенном примере "Alfred Hitchcock"
получит индекс 0
, "Stanley Kubrick"
— индекс 1
, и так далее.
Чтобы создать ассоциированный массив, нужно создать пары индекс — значение с помощью оператора =>
:
индекс => значение
Следующий пример создает ассоциированный массив с информацией о фильме и присваивает массиву имя $movie
:
$movie = array( "title" => "Rear Window", "director" => "Alfred Hitchcock", "year" => 1954 );
Чтобы создать массив без элементов, нужно написать:
$myArray = array();
Заключение
Мы провели краткий обзор концепции массивов в PHP и разобрали процесс их создания.
ruseller.com
Что такое массив PHP?
Начать данную тему хотелось бы с отречённых примеров. Допустим, мы рассматриваем какого-либо человека. У него есть имя, фамилия, адрес, телефон, пол, рост, цвет глаз и так далее. Информацию по всем этим пунктам можно отнести к массиву данных о человеке.
Массив может быть другого типа, без какой-либо конкретики по пунктам. Будет только тема. Допустим, это web-прграммирование. А в качестве элементов будут языки — HTML, CSS, JavaScript, PHP, MySQL. Всего 5 элементов.
Исходя из последнего примера предположим массив:
web-программирование
1. HTML
2. CSS
3. JavaScript
4. PHP
5. MySQL
Теперь смотрим на данный пример и анализируем основные понятия.
Массив в PHP — это набор последовательно расположенных однотипных данных, связанных общей тематикой, число элементов которого фиксировано.
Массив в данном примере будет называться web-программирование.
У каждого элемента есть своё порядковое место, идентификатор.
Индекс (ключ массива) — либо порядковый номер, либо текстовое значение, по которому можно идентифицировать элемент.
Индексами в примере выше будут числовые значение от 1 до 5. При обращении к индексу 2 мы увидим CSS.
Пример массива в PHP
Теперь давайте рассмотрим вышеуказанный пример в синтаксисе PHP, а не русского языка. Допустим массив будет называться короче — web. В квадратных скобках [] будет вставлять индекс.
Давайте рассмотрим простой пример массива, где в значении индексов будут числовые значения, а создавать массив будем так, словно переменным присваиваем значения.
$web[1]='HTML';
$web[2]='CSS';
$web[3]='JavaScript';
$web[4]='PHP';
$web[5]='MySQL';
$web; // данная переменная содержит массив с 5-ю элементами
// чтобы вывести один из элементов массива достаточно указать индекс в массиве
echo $web[4]; // выведет PHP
Одномерный массив
ИНДЕКСНЫЙ МАССИВ
Выше, с web-программированием, мы рассмотрели как раз пример одномерного массива.
Таким способом он создаётся редко. Он скорее наглядно показывает структуру массива. Чаще прибегают к другому методу.
$web=array('HTML','CSS','JavaScript','PHP','MySQL');
echo $web[0]; // выведет 'HTML'
echo $web[2]; // выведет 'JavaScript'
echo $web[3]; // выведет 'PHP'
Если Вы хотите задать значения индекса, то их надо указать следующим образом. Знак => является указателем для присваивания индекса значению или наоборот значению индекс.
$web=array(1=>'HTML',2=>'CSS',3=>'JavaScript',4=>'PHP',5=>'MySQL');
echo $web[1]; // HTML
echo $web[2]; // CSS
echo $web[4]; // PHP
В примере отсчёт начинается с 1. Переменная с индексом 0 вследствие этого пустая.
В следующем примере мы не будем указывать индекс.
$day[]='Понедельник'; // индекс 0
$day[]='Вторник'; // 1
$day[]='Среда'; // 2
$day[]='Четверг'; // 3
$day[]='Пятница'; // 4
Можно проследить, что происходит последовательное заполнение с нуля.
АССОЦИАТИВНЫЙ МАССИВ
Зачастую возникает потребность в создании буквенного индекса для элемента массива. Как я упоминал выше, такой индекс должен состоять из латинских букв, а имя должно быть заключено в кавычки. Рассмотрим на примере человека.
$user['nick']='Logic';
$user['name']='Павел';
$user['age']='25';
$user['sex']='Мужской';
$user; // переменная $user содержит массив с 4-мя элементами с буквенными индексами
// выводим элемент массива, указывая его буквенный индекс
echo $web['name']; // выведет 'Павел'
Как видите, всё достаточно просто. Только значение индекса закавычиваем.
Двумерный массив
Если Вы пропустили первую часть с Одномерным массивом, то настоятельно советую прочитать.
Если говорить проще, то это массив в массиве. То есть элементов большого массива является другой. Подобные массивы очень тормозят работу скрипта, загружая оперативную память, поэтому для быстрой обработки подобных групп данных созданы Базы Данных ( Что такое База данных? ), но о ней позже. Давайте разберём пример двумерного массива.
<?php
// массив с названиями Частей Света
$m = array('Европа','Азия','Африка','Америка','Австралия и Океания');
// массив с названиями Стран
$s = array('Россия','Украина','Беларусь','Казахстан');
// массив с названиями Столиц
$с = array('Москва','Киев','Минск','Астана');
// создаём двумерный массив География
$geography = array($m, $s, $с);
?>
Во включенных массивах, как Вы обратили внимание, может быть разное количество элементов. Из части про одномерные массивы следовало, что у каждого элемента массива может быть индекс. Так давайте для каждого включённого массива присвоим своё значение.
Для этого расширим последнюю строчку и напишем её следующим образом.
$geography = array('Части Света'=>$m, 'Страны'=>$s, 'Столицы'=>$с);
Функции работы с массивами php
Foreach — циклическая функция для работы с массивами, в которой количество циклов равно количеству элементов массива.
Имеет следующий вид. Код PHP
foreach (массив as $ключ=>$значение)
команды;
Ну и сразу пример работы
<?php
// создаём массив со знаменитыми IT
$names["Ритчи"] = "Деннис";
$names["Томпсон"] = "Кен";
$names["Гейтс"] = "Билл";
$names["Джобс"] = "Стив";
foreach ($names as $key => $value) {
echo "$value $key";
}
?>
На экран скрипт выведет
Деннис Ритчи
Кен Томпсон
Билл Гейтс
Стив Джобс
Count — функция, возвращающая количество элементов в массиве.
echo count($names); // в нашем примере с IT вернёт значение 4
Sort — функция, сортирующая элементы массива. Удобна в случае числовых значений индекса.
Arsort — функция, сортирующая элементы массива в обратном порядке.
sort($names); // сортирует по порядку. Удобно если в Индексе числа
arsort($names); // сортировать в обратном порядке. То есть по индексам элементы будут в порядке 3, 2, 1, 0
Unset — функция, удаляющая элемент массива.
unset($massiv[2]); // удаление элемента массива с индексом 2
unset($massiv); // удаление массива целиком
Array_search — функция поиска в массиве. Имеет два аргумента. Проще говоря, имеет вил array_search(‘что’, где)
$animals[1]='dog';
$animals[2]='cat';
$animals[3]='bird';
echo array_search('cat',$animals); // выведет индекс элемента - цифру 2
Shuffle — функция, которая перемешивает ключи значений массива.
shuffle($animals); // выстроит элементы в случайном порядке
Спасибо за внимание!
tradebenefit.ru
Двумерные массивы
Двумерный массив — массив, который в качестве значений хранит в себе другие массивы. Рассмотрим создание двумерного массива с помощью конструктора array()
:
$flowers = array( array("розы", 100 , 15), array("тюльпаны", 60 , 25), array("орхидеи", 180 , 7) );
Массив $flowers
содержит три массива. Как вы помните, для доступа к элементам одномерного массива надо указывать имя массива и ключ. То же самое верно и в отношении двумерных массивов, с одним исключением: каждый элемент имеет два ключа: первый для выбора строки, второй для выбора столбца.
Чтобы вывести элементы этого массива можно вручную прописать доступ к каждому из них, но лучше воспользоваться вложенными циклами:
<?php $flowers = array( array("розы", 100 , 15), array("тюльпаны", 60 , 25), array("орхидеи", 180 , 7) ); echo "<h1>Ручной доступ к элементам</h1>"; echo $flowers[0][0]." цена ".$flowers[0][1]." количество ".$flowers[0][2]."<br>"; echo $flowers[1][0]." цена ".$flowers[1][1]." количество ".$flowers[1][2]."<br>"; echo $flowers[2][0]." цена ".$flowers[2][1]." количество ".$flowers[2][2]."<br>"; echo "<h1>Использование циклов для вывода элементов</h1>"; echo "<ol>"; for ($row = 0; $row < 3; $row++) { echo "<li><b>Номер строки $row</b>"; echo "<ul>"; for ($col = 0; $col < 3; $col++) { echo "<li>".$flowers[$row][$col]."</li>"; } echo "</ul>"; echo "</li>"; } echo "</ol>"; ?>
Вместо номеров столбцов (индексы, присвоенные им по умолчанию) можно задавать им нужные ключи. Для этой цели используются ассоциативные массивы. Следующий массив будет хранить те же данные, но уже с использованием ключей для именования столбцов с информацией:
$flowers = array( array( "Название" => "розы", "Цена" => 100, "Количество" => 15 ), array( "Название" => "тюльпаны", "Цена" => 60, "Количество" => 25, ), array( "Название" => "орхидеи", "Цена" => 180, "Количество" => 7 ) );
Ключи создают дополнительное удобство для работы с массивом в тех случаях, когда нужно получить одно из значений. Необходимые данные можно легко найти, если обратиться к правильной ячейке, используя значимые имена строки и столбца. Однако при этом мы теряем возможность последовательно обхода массива с помощью цикла for
.
Мы можем перебрать с помощью цикла for
только дочерние массивы. Так как они, в свою очередь, являются ассоциативными, то для перебора их элементов нужно воспользоваться циклом foreach
, или перебрать элементы вручную:
<?php $flowers = array( array( "Название" => "розы", "Цена" => 100, "Количество" => 15 ), array( "Название" => "тюльпаны", "Цена" => 60, "Количество" => 25, ), array( "Название" => "орхидеи", "Цена" => 180, "Количество" => 7 ) ); echo "<h1>Ручной доступ к элементам ассоциативного массива</h1>"; for ($row = 0; $row < 3; $row++) { echo $flowers[$row]["Название"]." цена ".$flowers[$row]["Цена"] ." количество ".$flowers[$row]["Количество"]; echo "<br>"; } echo "<h1>Использование цикла foreach для доступа к элементам</h1>"; echo "<ol>"; for ($row = 0; $row < 3; $row++) { echo "<li><b>Номер строки $row</b>"; echo "<ul>"; foreach($flowers[$row] as $key => $value) { echo "<li>".$value."</li>"; } echo "</ul>"; echo "</li>"; } echo "</ol>"; ?>
Необязательно использовать для создания двумерного массива конструктор array()
, можно воспользоваться и коротким синтаксисом — квадратными скобками:
$flowers = [ [ "Название" => "розы", "Цена" => 100, "Количество" => 15 ], [ "Название" => "тюльпаны", "Цена" => 60, "Количество" => 25, ], [ "Название" => "орхидеи", "Цена" => 180, "Количество" => 7 ] ];
Трёхмерные массивы
Не обязательно ограничиваться только двумя измерениями: так же, как элементы массива могут содержать массивы, эти массивы, в свою очередь, могут содержать новые массивы.
Трёхмерный массив характеризует ширину, высоту и глубину. Если представлять двумерный массив в виде таблицы, то трёхмерный добавляет к этой таблице слои. Каждый элемент такого массива будет ссылаться на слой, строку и столбец.
Если немного модифицировать наш массив с цветами, то можно переделать его в трёхмерный. В коде, представленном ниже видно, что трёхмерный массив — массив, содержащий массив массивов:
$flowers = [ [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7] ], [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7], ], [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7] ] ];
Поскольку этот массив содержит только числовые индексы, мы можем использовать для его отображения вложенные циклы:
<?php $flowers = [ [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7] ], [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7], ], [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7] ] ]; echo "<ul>"; for ( $layer = 0; $layer < 3; $layer++ ) { echo "<li>Номер слоя $layer"; echo "<ul>"; for ( $row = 0; $row < 3; $row++ ) { echo "<li>Номер строки $row"; echo "<ul>"; for ( $col = 0; $col < 3; $col++ ) { echo "<li>".$flowers[$layer][$row][$col]."</li>"; } echo "</ul>"; echo "</li>"; } echo "</ul>"; echo "</li>"; } echo "</ul>"; ?>
puzzleweb.ru
Как вывести отдельный элемент массива
Итак, массив месяцев мы составили и даже научились смотреть на него функцией var_dump. Однако, полезного пока мало, так как var_dump используется для отладки кода и выводит весь массив целиком.
Предположим, мы хотим вывести на экран среду.
Делается это так: нужно после переменной массива (в нашем случае $a) написать квадратные скобки [ ], а в них указать порядковый номер элемента, который мы хотим вывести: $a[3]. Казалось бы, что порядковый номер среды — это 3, но это не так. Потому что в программировании нумерация начинается с нуля. Поэтому 0 — это понедельник, 1 — это вторник, а 2 — это среда.
Посмотрите и повторите пример:
Ассоциативный массив
Чтобы обратиться к нужному элементу массива, мы писали в квадратных скобках его порядковый номер (нумерация начинается с нуля, если вы уже забыли). Эти порядковые номера называются ключами массива. То есть мы получали значение элемента массива по его ключу.
В нашем случае PHP сам определял ключи для элементов — это были их порядковые номера. Иногда это может оказаться неудобным — мы хотим вывести на экран название третьего дня недели (среду), а должны писать в квадратных скобках цифру 2.
Поэтому в PHP можно указать ключи в явном виде – так, как нам нужно. Сделаем так, чтобы понедельник имел ключ 1, а не ноль, как было раньше (и всем остальным дням прибавим единицу):
Синтаксис здесь такой: ключ, затем идет стрелка =>, а потом значение.
Ключи не обязательно должны быть числами, они могут быть и строками. Сделаем массив, в котором ключами будут имена работников, а элементами — их зарплаты:
Узнаем зарплату Васи:
Массивы, у которых явно указаны ключи, называются ассоциативными.
Хитрость с ключами
Когда мы делали ассоциативный массив дней недели, нам приходилось расставлять все ключи вручную. И все для того, чтобы нумерация началась не с нуля, а с единицы. Это было немного неудобно.
Напомню вам этот массив:
На самом деле нет необходимости расставлять ключи всем элементам — достаточно только первому элементу поставить ключ 1.
Если у второго элемента не будет ключа, PHP поставит его автоматически, причем следующий по порядку.
А следующим номером будет как раз-таки число 2, так как предыдущий элемент имел ключ 1 (неважно, что мы сами его поставили, а не PHP автоматически).
Давайте поправим наш массив:
Итак, этот массив с одним нашим ключом фактически будет таким же, как и массив со всеми ключами, но сделать его проще — ключ ставится только первому элементу, а не всем.
Как еще можно создать массив
Объявление массива с помощью команды [] не является единственным способом его создания.
Можно просто присвоить значения элементам массива, не объявляя его через array (PHP нас поймет и сам создаст массив):
Естественно, ключи могут быть не только числовыми, но и текстовыми:
Кроме того, можно сделать так, что PHP сам добавит ключи (начиная с нуля и так далее). Для этого мы оставим квадратные скобки пустыми: $a[] = 1, а PHP сам добавит ключ. Пример:
Все способы создания массива
Итак, повторим все способы создания массива:
Многомерный массив
Элементы массива могут быть не только строками и числами, но и массивами. То есть у нас получится массив массивов или многомерный массив.
Давайте сделаем массив студентов $students, который будет содержать два подмассива: студенты мужского пола и женского:
Чтобы вывести какой-либо элемент из многомерного массива следует писать уже не одну пару [ ], а две: $a[‘boys’][0] – так мы выведем ‘Коля’.