Массивы в PHP - подробное руководство

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

Но прежде я расскажу вам интересную историю.

Рядом с моим офисом есть магазин DVD с отличной подборкой английских фильмов. Владелец магазина не очень образованный человек, но все же он может легко найти нужный фильм среди 20 тысяч дисков. Как он это делает?

Я проанализировал его стратегию. Владелец магазина классифицировал все DVD-диски по разным жанрам, а также указал специальные идентификаторы / коды для разных полок. Он держит похожие фильмы на одних полках. Каждая полка маркируется по названию категории, например, Romantic Movies, Horror Movies и т. д.. Каждый DVD имеет уникальный идентификатор, который можно использовать для отслеживания.

Поэтому, если вы когда-нибудь откроете свой магазин DVD, сделайте следующее:

  • Храните похожие DVD-диски на одной полке.
  • Обозначьте каждую категорию по ее названию.
  • Обозначьте ряды DVD.
  • Назначьте идентификаторы всем DVD-дискам.

Теперь о морали этой истории, которая позволит нам вернуться к миру компьютеров.
Иногда в программировании нужно обрабатывать связанные значения, которые соотносятся друг с другом по-разному. Например, имена пяти лучших учеников, модели автомобилей Porsche, переменные, представленные в определенной форме и т. д. В таких случаях необходимо организовать код и логику для эффективного и быстрого управления ими. Для этого можно использовать логику продавца DVD:

1. Организуйте данные в различные категории.
2. Определите ряды (строки).
3. Назначьте уникальные идентификаторы для каждого значения данных.

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

Массивы в PHP — корректное определение

«Набор различных переменных с одной меткой, позволяющий организовать значения для их более простой обработки».

Это мое собственное определение массивов. Хотя некоторые определяют их как «переменную, которая содержит в себе другие переменные».

Синтаксис массива PHP:

$arrayName = array (”value1?,”value2?,”value3?);

Мы используем символ $, чтобы задать имя массива. После этого идет знак равенства, а затем ключевое слово «array». Оно сообщает парсеру, что мы работаем с массивом.

Затем идут значения в круглых скобках, и каждое из них заключено в двойные кавычки и разделено запятой.

Пример того как определяются и выводятся массивы в PHP:

<?php
 
$Top3Sites = array ("fastcreators.com","howtoforge.com","scriptsbible.com");
 
print_r($Top3Sites);
?>

Результат приведенной выше программы будет следующим:

Array
(
[0] => fastcreators.com
[1] => howtoforge.com
[2] => scriptsbible.com
)

Мы используем print_r, потому что нельзя вывести массив с помощью функции echo или print. Хотя можно использовать их для отображения отдельных элементов из массива. Например:

echo $Top3Sites[0]; //fastcreators.com

Помните, что номер индекса начинается с 0, а не 1.

Каждое значение массива получает уникальный идентификатор, который известен как INDEX NUMBER.
Еще одним способом может быть определение трех переменных, присвоение им значений и использование разных операторов для их отображения. Это может быть приемлемым в случае трех значений, принимаемых аргументом. Но не подходит, когда мы имеем дело с полусотней или сотнями значений.

В приведенном выше примере мы определили массив и присвоили ему значения за один шаг. Хотя можно сделать это следующим образом:

<?php
$students = array(); //только определяем массив
//присвоение значений
$students[0] = "Haroon";
$students[1] = "Celine";
$students[3] = "Jennifer";
$students[4] = "Bobby";
?>

Массивы в PHP — основные типы

В PHP существует три типа массивов:

  • Числовой массив PHP: массив с числовым ключом идентификатора.
  • Ассоциативный массив PHP: массив, в котором каждый ключ идентификатора связан со значением.
  • Многомерный массив PHP: массив, состоящий из одного или нескольких массивов.

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

<?php
$colours = array("white","black","blue");
print_r($colours);
/*
вывод будет следующий
Array
(
[0] => white
[1] => black
[2] => blue
)
*/
?>

В приведенном выше коде индексы для white, black и blue соответствуют 0,1,2.Поэтому мы называем такие массивы числовыми.

Ассоциативный массив PHP

Иногда лучше использовать индексные имена вместо чисел. Например, если вы хотите сохранить имена и номера трех учеников.

<?php
 
$students['Anna'] = 90;
$students['Maria'] = 60;
$students['Jennifer'] = 40;
 
?>

Когда отправляете данные формы с использованием метода POST или GET, вы получаете ассоциативный массив. Попробуйте создать HTML-форму с полями и опубликовать ее, а на странице обработки вывести глобальный массив, например:

print_r($_POST);
print_r($_GET);

и вы получите ассоциативный массив.

Ассоциативные массивы позволяют проще обрабатывать информацию, связанную со сложным представлением данных формы, динамическими значениями из базы данных и т. д.

Многомерный массив PHP

Многомерный массив PHP может содержать массивы внутри себя, а подмассивы могут включать в себя другие массивы.

Используем пример из реальной жизни. У Дэвида есть два сына — Ричи и Мейсон. У Ричи есть две дочери — Сью и Наташа, в то время как у Мейсона три дочери — Николь, Сальма и Эмбер. Их семейное древо выглядит следующим образом:

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

$david = array
(
“richie”=>array
(
“Sue”,
“Natasha”
),
“Mason”=>array
(
“Nichole”,
“Salma”,
“Amber”
)
);

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

Изучаем PHP: работа с массивами-цикл FOREACH

Цикл FOREACH используется, чтобы принимать каждое последующее значение массива и выполнять с ним требуемые действия.

Основной синтаксис цикла FOREACH следующий:

foreach( $arraynameas $temporaryVarName ) {
// тело цикла foreach
//$temporaryVarName содержит значения массива и
//при каждой следующей итерации принимает следующее доступное значение из массива
}

Напишем программу, используя цикл FOREACH:

<?php
 
  $students = array(); // define array students
    
//присвоение значений
 
    $students[0] = "david";
      $students[1] = "kevin"; 
      $students[2] = "julie";
    $students[3] = "nayyar";
 
/*
  теперь мы используем цикл foreach, чтобы вывести имена всех студентов, то есть массив значений
*/
 
foreach( $studentsas $std_name ) { 
   
   echo $std_name . "n";

}
  
?>

$std_name выполняет роль переменной, которая принимает значение массива. При каждом запуске цикла следующее значение массива перезаписывает существующее значение $std_name, и $std_name указывает на текущее выбранное значение. Так мы выполняем переборку значений массиваодно за другим.

Результатом работы приведенного выше кода:

david
kevin
julie
nayyar

Цикл FOREACH завершается при достижении последнего значения в массиве. В нашем случае это значение NAYYAR.

Вы можете прервать цикл в любое время с помощью оператора break. Например, когда обрабатывается имя julie, вы можете включить в приведенный выше код оператор IF, как показано ниже:

<?php
 
foreach( $studentsas $std_name ) { 
  
    if($std_name == "julie") break;
    echo $std_name . "n"; 

}
  
?>

Существуют и другие удобные функции для работы с массивами.

Массивы в PHP — функции работы с массивами

Сохранение вывода функции print_r

Ранее мы использовали print_r для отображения значений массива. Но можно добавить к print_r дополнительный аргумент и сохранить результат в переменной. Например:

<?php
    $myarray = array("Apples", "Oranges", "Pears");
      $output = print_r($myarray, true);
    print $output;
?>

Print_r будет отображать сам массив, если вы не используете TRUE — второй аргумент. Но, если указано TRUE, функция сохраняет вывод в переменной.

Как определить в php размер массива?

Если вы хотите определить php количество элементов в массиве, можно использовать функцию COUNT следующим образом:

<?php
    $myarray = array("Apples", "Oranges", "Pears");
    $size = count($myarray);  
    print $size; // 3
?>

Приведенный выше кода выводит 3, потому что в массиве есть три элемента.

Функция var_dump

Это функция, аналогичная print_r(). В основном она делает то же самое, но:

  • выводит размеры переменных;
  • не выводит не публичные данные в объектах;
  • не поддерживает второй параметр для возврата вывода.

Изменив первый скрипт с использованием var_dump(), получим следующий результат:

array(3) {
[0]=>
string(6) “Apples”
[1]=>
string(7) “Oranges”
[2]=>
string(5) “Pears”
} 

Функция var_dump() отобразила, что массив имеет три значения, а также вывела длину каждой строки.

Функция var_export

Существует функция var_export(), которая похожа на var_dump() и print_r(). Она отличается тем, что выводит информацию о переменной в виде результата, который может использоваться в качестве PHP- кода. Например, если бы мы использовали var_export() вместо print_r (), то получили бы следующее:

array (
0 => ‘Apples’,
1 => ‘Oranges’,
2 => ‘Pears’,
)

Обратите внимание, что после последнего элемента добавляется дополнительная запятая. Но она игнорируется PHP, и вы можете скопировать и вставить эту информацию непосредственно в свои скрипты:

<?php
    $foo = array (
    0 => 'Apples',
    1 => 'Oranges',
    2 => 'Pears',
);
?>

Функция array shift PHP

Она удаляет первый элемент из массива и сохраняет его в переменной.

Например, можно удалить Apples из массива, используемого в предыдущих примерах, и сохранить это значение в другой переменной:

<?php
 
    $myarray = array("Apples", "Oranges", "Pears");
    $fruit = array_shift($myarray);  
    echo $fruit; // Apples
    print_r($myarray);  // Oranges and Pears will bedisplayedwithout Apples
 
?>

Это удобная функция, если есть многомерный массив, переданный из формы, и вы хотите получить под матрицу из основного массива. Но когда вы выбираете под матрицу из основного массива с помощью array_shift, принимающие переменные ($fruit в предыдущем примере) будут массивом.

Я также предлагаю вам изучить другие полезные функции, связанные с array_shift:

  • array_unshift
  • array_pop
  • array_push

Также я хочу отметить, что цикл FOREACH — не единственный способ обработки массивов. Это можно сделать с помощью цикла FOR или функций list() и each().

Для обработки массива нужно определить размер массива, как показано ниже:

<?php
    
    for ($i = 0; $i <count($array); ++$i) {
        print $array[$i];
    }
?>

Это отлично подходит для числовых массивов, которые имеют целочисленные индексы, но не работает для ассоциативных массивов.

PHP перебор массива с помощью функции list()

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

<?php
    while (list($var, $val) = each($array)) {
        print "$var is $valn";
    }
?>

List() — это функция, которая противоположна функции array(). Она принимает массив и преобразует его в отдельные переменные. Each() принимает массив в качестве параметра, возвращает текущий ключ и значение в этом массиве, прежде чем переместить курсор массива. «Курсора массива» — это технический термин, обозначающий элемент массива, который в настоящее время считывается.

Все массивы имеют курсор. Его можно свободно перемещать. Курсор используется в цикле while в примере, приведенном выше. Сначала each() возвращает первый элемент, затем второй элемент, третий и т. д., пока не определит, что элементов больше не осталось. Тогда функция вернет значение false и завершит цикл.

Смысл первой строки — «получить текущий элемент в массиве и присвоить его ключ переменной $var, а его значение — переменной $val, и затем передвинуть курсор массива дальше».

Получение индекса и его значения

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

<?php
 
foreach ($array as $key => $val) {
    print "$key = $valn";
} 
 
?>

Цель этой статьи — дать представление о массивах и разных методах хранения и обработки информации в массивах. Но если у вас есть вопросы по массивам, пожалуйста, задавайте их в комментариях к этой статье.

Пожалуйста, оставляйте ваши комментарии по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, подписки, лайки, дизлайки, отклики!

Данная публикация является переводом статьи «Detailed Guide On Arrays In PHP» , подготовленная редакцией проекта.

Меню
Posting....