Php как нужно создавать новый массив
Перейти к содержимому

Php как нужно создавать новый массив

  • автор:

Cоздаем массив в PHP

Как и большинство языков программирования PHP имеет возможности работать с массивами. Массив — это специальный тип переменных, который может содержать множество значений одновременно, доступных через одно имя переменой. Массив очень удобно использовать при работе с большим количеством данных (таких, как записи в базе данных), или групп значений, взаимосвязанных друг с другом.

В данном уроке вы узнаете:

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

Как работают массивы

Как уже упоминалось выше, массив — это переменная, которая может содержать более, чем одно значение. Несколько фактов о массивах PHP:

  • Массив может содержать любое количество значений, и в том числе ни одного значения.
  • Каждое значение в массиве называется .
  • К каждому элементу можно получить доступ с помощью , который может быть числовым или строчным значением. Каждый элемент в массиве имеет свой собственный уникальный индекс.
  • Элемент может хранить любой тип переменных, например, целое число, строку или логическое значение. Можно смешивать типы значений в массиве — например, первый элемент может содержать целое число, второй элемент может содержать строку и так далее.
  • массива — это количество элементов в массиве.
  • Значения элементов массива сами могут быть массивами. Таким образом можно создать .

Преимущества массивов

Массивы PHP имеют множество преимуществ, включая следующие:

  • Ими легко манипулировать. Легко добавить или удалить элементы в массив, так же как и прочитать или изменить значение элемента.
  • Легко работать со множеством значений одновременно. Можно легко организовать цикл по всем элементам массива, читая или изменяя значение каждого элемента.
  • PHP имеет много удобных функций для обработки массивов. Например, вы можете сортировать элементы, искать определенное значение или индекс, объединять массивы вместе.

Индексированные и ассоциированные массивы

PHP работает с двумя типами массивов:

  • имеют числовые индексы. Обычно индекс в индексированных массивах начинается с нуля, таким образом первый элемент имеет индекс 0 , второй — индекс 1 , и так далее. Обычно такие массивы используются для хранения набора данных в определенном порядке.
  • имеют строчные индексы. Например, один элемент ассоциированного массива может иметь индекс «name» , а другой элемент будет иметь индекс «age» . Порядок элементов обычно не важен. Ассоциированные массивы используются в случаях, когда нужно хранить записи данных, как при использовании базы данных.

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

Ассоциированные массивы иногда называются , а их индексы часто называют .

Как создать массив в PHP

В скрипте PHP создать массив очень просто. Для этого используется конструкция array() :

Чтобы создать индексированный массив, просто перечислите значения внутри скобок, разделяя их запятой. Следующая строка создает индексированный массив с именами режиссеров и присваивает массиву имя $directors :

При создании индексированного массива PHP автоматически назначает индекс каждому элементу. В выше приведенном примере «Alfred Hitchcock» получит индекс 0 , «Stanley Kubrick» — индекс 1 , и так далее.

Чтобы создать ассоциированный массив, нужно создать пары индекс — значение с помощью оператора => :

Следующий пример создает ассоциированный массив с информацией о фильме и присваивает массиву имя $movie :

Чтобы создать массив без элементов, нужно написать:

Заключение

Мы провели краткий обзор концепции массивов в PHP и разобрали процесс их создания.

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.elated.com/articles/creating-php-arrays/
Перевел: Сергей Фастунов
Урок создан: 6 Сентября 2010
Просмотров: 49124
Правила перепечатки

5 последних уроков рубрики «PHP»

Фильтрация данных с помощью zend-filter

Когда речь идёт о безопасности веб-сайта, то фраза "фильтруйте всё, экранируйте всё" всегда будет актуальна. Сегодня поговорим о фильтрации данных.

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Подборка PHP песочниц

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

PHP: массивы

Roman

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

  • Числовой — массив с числовым индексом. Хранение значений и доступ к такому массиву осуществляются линейно.
  • Ассоциативный — массив со строками в качестве индекса. В нем значения элементов хранятся по ассоциации с ключевыми значениями, а не в строгом линейном порядке индексов.
  • Многомерный — массив, содержащий один или несколько массивов, доступ к значениям которых осуществляется с помощью многомерных индексов.

Числовые массивы

Эти массивы могут хранить числа, строки и любые объекты, причем их индексы всегда будут представлены числами. По умолчанию индекс числового массива начинается с нуля.

Пример

Ниже приведен пример создания и доступа к числовому массиву. Для создания массива использована функция array() :

Ассоциативные массивы

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

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

ПРИМЕЧАНИЕ: Не заключайте ассоциативный массив в двойные кавычки, иначе он не вернет никакого значения.

Пример

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

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

Пример

В приведенном ниже примере создан двумерный массив для хранения оценок трех студентов по трем предметам.

Это пример ассоциативного массива. Вы можете создать числовой массив таким же образом:

Arrays in PHP

Arrays are a strong data-handling tool in PHP. Arrays are a type of data structure that enables programmers to store and manipulate several values in a single variable. They are incredibly adaptable and may be utilized in a wide range of applications, from basic lists to complicated data structures. We will cover all you need to know to master dealing with PHP arrays in this comprehensive guide.

Understanding the Basics of PHP Arrays

There are two main types of arrays in PHP: indexed and associative.

Indexed Arrays

Indexed arrays are made by assigning many values to a single variable, each with its own integer index. As an example:

In this example, “apple” has the index 0, “banana” has the index 1, and “orange” has the index 2. These values may be accessed by using the array’s index, as seen below:

Associative Arrays

In contrast, associative arrays are built by assigning keys (strings or numbers) to values. As an example:

In this example, “name” is set to “John Smith,” “age” is set to “30,” and “address” is set to “123 Main St.”. These values may be accessed by using the array’s keys as follows:

Creating Arrays

There are several ways to create arrays in PHP, including:

  • Using the array() function
  • Using the square brackets []
  • Using the range() function

Using the array() Function

In PHP, the array() method is the most often used technique to generate an array. As an example:

Using Square Brackets

You can also create an array using square brackets [] in PHP 5.4 and later versions. For example:

Using the range() Function

The range() function creates an array of numbers within a specified range. For example:

This creates an array of numbers from 1 to 10.

Accessing Array Elements

You can access the elements of an array using the index or key of the element. For example:

Modifying Array Elements

You can modify the elements of an array by assigning a new value to the index or key of the element. For example:

In this example, the value at index 0 of the $fruits array is changed from “apple” to “mango”.

Similarly, for associative arrays:

The value of the key “name” in the $person array is changed from “John Smith” to “Jane Doe” in this example.

Advanced Array Manipulation

After you’ve mastered the fundamentals of arrays, you may go on to more complex array manipulation techniques.

Sorting Arrays

PHP has a number of built-in functions for sorting arrays, including sort(), usort(), and ksort (). Each of these methods organizes the items of an array in a different way, and you may select the one that best meets your requirements.

This will sort the elements of the $fruits array in ascending alphabetical order.

Merging and Splicing Arrays

You can merge two or more arrays together using the array_merge() function, like so:

This will generate a new array containing all of the entries from $fruits1 and $fruits2. You may also use the array splice() method to delete entries from an array, as seen below:

This will remove the element at index 1 from the $fruits array.

Iterating Through Arrays

You can iterate through the elements of an array using a for loop or a foreach loop, like so:

Filtering Arrays

You can filter the elements of an array using the array_filter() function, like so:

This will create a new array that contains all elements of $fruits except for ‘banana’.

Working with Nested Arrays

Nested arrays are arrays that include one or more other arrays. They may be used to store sophisticated data structures.

Creating Nested Arrays

You can create a nested array by including an array as an element of another array. For example:

This creates an array $fruits with 3 elements

, where the third element is an array containing “orange” and “grapes”.

Accessing Elements in Nested Arrays

To access an element in a nested array, you must supply the element’s index or key at each level of the nested array. As an example:

Modifying Elements in Nested Arrays

You can modify an element in a nested array by specifying the index or key of the element in each level of the nested array. For example:

The value at index 0 of the third element (an array) of the $fruits array is changed from “orange” to “mango” in this example.

Iterating Through Nested Arrays

You can iterate through the elements of a nested array using nested loops. For example:

This will output all elements of the nested array $fruits.

Built-in PHP Array Functions

PHP has a number of built-in functions for working with arrays. The following are some of the most regularly utilized functions:

  • count() : returns the number of elements in an array
  • sort() : sorts the elements of an array
  • implode() : converts an array into a string
  • explode() : converts a string into an array
  • array_keys() : returns all the keys of an array
  • array_values() : returns all the values of an array
  • array_unique() : removes duplicate values from an array

Best Practices for Working with PHP Arrays

  • Choosing the right data type: It is important to choose the right data type for your array, as it can have a big impact on performance and memory usage.
  • Optimizing performance: Avoid using large arrays or performing complex operations on them, as they can cause performance issues.
  • Error handling and debugging: Always check for errors and debug your code when working with arrays.
  • Security considerations: Be aware of potential security issues when working with arrays, such as SQL injection and cross-site scripting.

Real-world Examples of Using Arrays

  • Data storage and retrieval from a database: Arrays are frequently used to store data retrieved from a database and then used to display it on a webpage.
  • Developing a basic to-do list app: In a to-do list application, arrays may be used to store and manage a list of tasks.
  • Creating a contact form: Arrays may be used to store and validate data sent via a contact form.
  • Creating a simple shopping cart: Arrays can be used to store and manage the items in a shopping cart.

Q: What are the two main types of arrays in PHP?
A: The two main types of arrays in PHP are indexed arrays and associative arrays.

Q: How do you create an indexed array in PHP?
A: To create an indexed array in PHP, you can use the array() function or square brackets [] in PHP 5.4 and later versions. For example: $fruits = array(«apple», «banana», «orange»);

Q: How do you access an element in an indexed array?
A: To access an element in an indexed array, you can use the element’s index. For example: $fruits = array(«apple», «banana», «orange»); echo $fruits[0]; // outputs «apple»

Q: How do you create an associative array in PHP?
A: To create an associative array in PHP, you can use the array() function and assign keys to values. For example: $person = array(«name» => «John Smith», «age» => 30, «address» => «123 Main St.»);

Q: How do you access an element in an associative array?
A: To access an element in an associative array, you can use the element’s key. For example: $person = array(«name» => «John Smith», «age» => 30, «address» => «123 Main St.»); echo $person[«name»]; // outputs «John Smith»

Q: What is a nested array?
A: A nested array is an array that contains one or more arrays inside it. They are useful for storing complex data structures.

Q: How do you iterate through a nested array?
A: To iterate through a nested array, you can use nested loops. For example: foreach ($fruits as $fruit) < if (is_array($fruit)) < foreach ($fruit as $subFruit) < echo $subFruit; >> else < echo $fruit; >>

Q: What is the function to sort an array in PHP?
A: The built-in function to sort an array in PHP is sort() . For example: sort($fruits);

Q: What is the function to remove duplicates from an array in PHP?
A: The built-in function to remove duplicates from an array in PHP is array_unique() . For example: $unique = array_unique($fruits);

Q: What are some best practices to keep in mind when working with PHP arrays?
A: When dealing with PHP arrays, some best practices include selecting the appropriate data type, maximizing efficiency, managing errors and debugging, and being mindful of any security risks.

Массивы

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

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

Синтаксис

Определение при помощи array()

Массив (тип array ) может быть создан языковой конструкцией array() . language construct. В качестве параметров она принимает любое количество разделенных запятыми пар key => value (ключ => значение).

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

Начиная с PHP 5.4 возможно использовать короткий синтаксис определения массивов, который заменяет языковую конструкцию array() на [].

Пример #1 Простой массив

key может быть либо типа integer , либо типа string . value может быть любого типа.

  • Строки, содержащие целое число будут преобразованы к типу integer . Например, ключ со значением "8" будет в действительности сохранен со значением 8. С другой стороны, значение "08" не будет преобразовано, так как оно не является корректным десятичным целым.
  • Числа с плавающей точкой (тип float ) также будут преобразованы к типу integer , т.е. дробная часть будет отброшена. Например, ключ со значением 8.7 будет в действительности сохранен со значением 8.
  • Тип bool также преобразовываются к типу integer . Например, ключ со значением true будет сохранен со значением 1 и ключ со значением false будет сохранен со значением 0.
  • Тип null будет преобразован к пустой строке. Например, ключ со значением null будет в действительности сохранен со значением "".
  • Массивы (тип array ) и объекты (тип object ) не могут использоваться в качестве ключей. При подобном использовании будет генерироваться предупреждение: Недопустимый тип смещения (Illegal offset type).

Если несколько элементов в объявлении массива используют одинаковый ключ, то только последний будет использоваться, а все другие будут перезаписаны.

Пример #2 Пример преобразования типов и перезаписи элементов

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

Так как все ключи в вышеприведенном примере преобразуются к 1, значение будет перезаписано на каждый новый элемент и останется только последнее присвоенное значение "d".

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

Пример #3 Смешанные ключи типов integer и string

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

Параметр key является необязательным. Если он не указан, PHP будет использовать предыдущее наибольшее значение ключа типа integer , увеличенное на 1.

Пример #4 Индексированные массивы без ключа

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

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

Пример #5 Ключи для некоторых элементов

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

Как вы видите последнее значение "d" было присвоено ключу 7. Это произошло потому, что самое большое значение ключа целого типа перед этим было 6.

Доступ к элементам массива с помощью квадратных скобок

Доступ к элементам массива может быть осуществлен с помощью синтаксиса array[key].

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

var_dump ( $array [ «foo» ]);
var_dump ( $array [ 42 ]);
var_dump ( $array [ «multi» ][ «dimensional» ][ «array» ]);
?>

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

Замечание:

Для доступа к элементам массива могут использоваться как квадратные, так и фигурные скобки (например, $array[42] и $array означают одно и то же в вышеприведенном примере).

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

С PHP 5.5 стало возможным прямое разыменование элементов у литерала массива.

Пример #7 Разыменование массива

<?php
function getArray () <
return array( 1 , 2 , 3 );
>

// в PHP 5.4
$secondElement = getArray ()[ 1 ];

// ранее делали так
$tmp = getArray ();
$secondElement = $tmp [ 1 ];

// или так
list(, $secondElement ) = getArray ();
?>

Замечание:

Попытка доступа к неопределенному ключу в массиве — это то же самое, что и попытка доступа к любой другой неопределенной переменной: будет сгенерирована ошибка уровня E_NOTICE , и результат будет NULL .

Создание/модификация с помощью синтаксиса квадратных скобок

Существующий массив может быть изменен явной установкой значений в нем.

Это выполняется присвоением значений массиву array с указанием в скобках ключа. Кроме того, вы можете опустить ключ. В этом случае добавьте к имени переменной пустую пару скобок ([]).

Если массив $arr еще не существует, он будет создан. Таким образом, это еще один способ определить массив array . Однако такой способ применять не рекомендуется, так как если переменная $arr уже содержит некоторое значение (например, значение типа string из переменной запроса), то это значение останется на месте и [] может на самом деле означать доступ к символу в строке. Лучше инициализировать переменную путем явного присваивания значения.

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

<?php
$arr = array( 5 => 1 , 12 => 2 );

$arr [] = 56 ; // В этом месте скрипта это
// то же самое, что и $arr[13] = 56;

$arr [ «x» ] = 42 ; // Это добавляет к массиву новый
// элемент с ключом «x»

unset( $arr [ 5 ]); // Это удаляет элемент из массива

unset( $arr ); // Это удаляет массив полностью
?>

Замечание:

Как уже говорилось выше, если ключ не был указан, то будет взят максимальный из существующих целочисленных ( integer ) индексов, и новым ключом будет это максимальное значение (в крайнем случае 0) плюс 1. Если целочисленных индексов еще нет, то ключом будет 0 (ноль).

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

<?php
// Создаем простой массив.
$array = array( 1 , 2 , 3 , 4 , 5 );
print_r ( $array );

// Теперь удаляем каждый элемент, но сам массив оставляем нетронутым:
foreach ( $array as $i => $value ) <
unset( $array [ $i ]);
>
print_r ( $array );

// Добавляем элемент (обратите внимание, что новым ключом будет 5, вместо 0).
$array [] = 6 ;
print_r ( $array );

// Переиндексация:
$array = array_values ( $array );
$array [] = 7 ;
print_r ( $array );
?>

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

Полезные функции

Для работы с массивами существует достаточное количество полезных функций. Смотрите раздел функции для работы с массивами.

Замечание:

Функция unset() позволяет удалять ключи массива. Обратите внимание, что массив НЕ будет переиндексирован. Если вы действительно хотите поведения в стиле "удалить и сдвинуть", можно переиндексировать массив используя array_values() .

<?php
$a = array( 1 => ‘один’ , 2 => ‘два’ , 3 => ‘три’ );
unset( $a [ 2 ]);
/* даст массив, представленный так:
$a = array(1 => ‘один’, 3 => ‘три’);
а НЕ так:
$a = array(1 => ‘один’, 2 => ‘три’);
*/

$b = array_values ( $a );
// Теперь $b это array(0 => ‘один’, 1 => ‘три’)
?>

Управляющая конструкция foreach существует специально для массивов. Она предоставляет возможность легко пройтись по массиву.

Что можно и нельзя делать с массивами

Почему $foo[bar] неверно?

Всегда заключайте в кавычки строковый литерал в индексе ассоциативного массива. К примеру, пишите $foo['bar'], а не $foo[bar]. Но почему? Часто в старых скриптах можно встретить следующий синтаксис:

This is wrong, but it works. The reason is that this code has an undefined constant (bar) rather than a string ('bar' — notice the quotes). PHP may in the future define constants which, unfortunately for such code, have the same name. It works because PHP automatically converts a bare string (an unquoted string which does not correspond to any known symbol) into a string which contains the bare string . For instance, if there is no defined constant named bar , then PHP will substitute in the string 'bar' and use that.

Замечание: Это не означает, что нужно всегда заключать ключ в кавычки. Нет необходимости заключать в кавычки константы или переменные, поскольку это помешает PHP обрабатывать их.

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

Дополнительные примеры, демонстрирующие этот факт:

<?php
// Показываем все ошибки
error_reporting ( E_ALL );

$arr = array( ‘fruit’ => ‘apple’ , ‘veggie’ => ‘carrot’ );

// Верно
print $arr [ ‘fruit’ ]; // apple
print $arr [ ‘veggie’ ]; // carrot

// Неверно. Это работает, но из-за неопределенной константы с
// именем fruit также вызывает ошибку PHP уровня E_NOTICE
//
// Notice: Use of undefined constant fruit — assumed ‘fruit’ in.
print $arr [ fruit ]; // apple

// Давайте определим константу, чтобы продемонстрировать, что
// происходит. Мы присвоим константе с именем fruit значение ‘veggie’.
define ( ‘fruit’ , ‘veggie’ );

// Теперь обратите внимание на разницу
print $arr [ ‘fruit’ ]; // apple
print $arr [ fruit ]; // carrot

// Внутри строки это нормально. Внутри строк константы не
// рассматриваются, так что ошибки E_NOTICE здесь не произойдет
print «Hello $arr [ fruit ] » ; // Hello apple

// С одним исключением: фигурные скобки вокруг массивов внутри
// строк позволяют константам там находиться
print «Hello < $arr [ fruit ]>» ; // Hello carrot
print «Hello < $arr [ 'fruit' ]>» ; // Hello apple

// Это не будет работать и вызовет ошибку обработки, такую как:
// Parse error: parse error, expecting T_STRING’ or T_VARIABLE’ or T_NUM_STRING’
// Это, конечно, также действует и с суперглобальными переменными в строках
print «Hello $arr [ ‘fruit’]» ;
print «Hello $_GET [ ‘foo’]» ;

// Еще одна возможность — конкатенация
print «Hello » . $arr [ ‘fruit’ ]; // Hello apple
?>

Если вы переведете error_reporting в режим отображения ошибок уровня E_NOTICE (например, такой как E_ALL ), вы сразу увидите эти ошибки. По умолчанию error_reporting установлена их не отображать.

Как указано в разделе синтаксис, внутри квадратных скобок ('[' и ']') должно быть выражение. Это означает, что можно писать вот так:

Это пример использования возвращаемого функцией значения в качестве индекса массива. PHP известны также и константы:

Обратите внимание, что E_ERROR — это такой же верный идентификатор, как и bar в первом примере. Но последний пример по сути эквивалентен такой записи:

поскольку E_ERROR соответствует 1, и т.д.

Так что же в этом плохого?

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

Замечание: Повторим, внутри строки ( string ), заключенной в двойные кавычки, корректно не окружать индексы массива кавычками, поэтому "$foo[bar]" является верной записью. Более подробно почему — смотрите вышеприведенные примеры, а также раздел обработка переменных в строках.

Преобразование в массив

Для любого из типов: integer , float , string , boolean и resource , преобразование значения в массив дает результатом массив с одним элементом (с индексом 0), являющимся скалярным значением, с которого вы начали. Другими словами, (array)$scalarValue — это точно то же самое, что и array($scalarValue).

Если вы преобразуете в массив объект ( object ), вы получите в качестве элементов массива свойства (переменные-члены) этого объекта. Ключами будут имена переменных-членов, с некоторыми примечательными исключениями: целочисленные свойства станут недоступны; к закрытым полям класса (private) спереди будет дописано имя класса; к защищенным полям класса (protected) спереди будет добавлен символ '*'. Эти добавленные значения с обоих сторон также имеют нулевые байты. Это может вызвать несколько неожиданное поведение:

class A <
private $A ; // Это станет ‘\0A\0A’
>

class B extends A <
private $A ; // Это станет ‘\0B\0A’
public $AA ; // Это станет ‘AA’
>

Вышеприведенный код покажет 2 ключа с именем 'AA', хотя один из них на самом деле имеет имя '\0A\0A'.

Если вы преобразуете в массив значение NULL , вы получите пустой массив.

Сравнение

Массивы можно сравнивать при помощи функции array_diff() и операторов массивов.

Примеры

The array type in PHP is very versatile. Here are some examples: Тип массив в PHP является очень гибким, вот несколько примеров:

<?php
// это
$a = array( ‘color’ => ‘red’ ,
‘taste’ => ‘sweet’ ,
‘shape’ => ’round’ ,
‘name’ => ‘apple’ ,
4 // ключом будет 0
);

$b = array( ‘a’ , ‘b’ , ‘c’ );

// . . .полностью соответствует
$a = array();
$a [ ‘color’ ] = ‘red’ ;
$a [ ‘taste’ ] = ‘sweet’ ;
$a [ ‘shape’ ] = ’round’ ;
$a [ ‘name’ ] = ‘apple’ ;
$a [] = 4 ; // ключом будет 0

// после выполнения этого кода, $a будет массивом
// array(‘color’ => ‘red’, ‘taste’ => ‘sweet’, ‘shape’ => ’round’,
// ‘name’ => ‘apple’, 0 => 4), а $b будет
// array(0 => ‘a’, 1 => ‘b’, 2 => ‘c’), или просто array(‘a’, ‘b’, ‘c’).
?>

Пример #8 Использование array()

<?php
// Массив как карта (свойств)
$map = array( ‘version’ => 4 ,
‘OS’ => ‘Linux’ ,
‘lang’ => ‘english’ ,
‘short_tags’ => true
);

// исключительно числовые ключи
$array = array( 7 ,
8 ,
0 ,
156 ,
— 10
);
// это то же самое, что и array(0 => 7, 1 => 8, . )

$switching = array( 10 , // ключ = 0
5 => 6 ,
3 => 7 ,
‘a’ => 4 ,
11 , // ключ = 6 (максимальным числовым индексом было 5)
‘8’ => 2 , // ключ = 8 (число!)
’02’ => 77 , // ключ = ’02’
0 => 12 // значение 10 будет перезаписано на 12
);

// пустой массив
$empty = array();
?>

Пример #9 Коллекция

<?php
$colors = array( ‘red’ , ‘blue’ , ‘green’ , ‘yellow’ );

foreach ( $colors as $color ) <
echo «Вам нравится $color ?\n» ;
>

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

Изменение значений массива напрямую стало возможным с версии PHP 5 путем передачи их по ссылке. До этого необходим следующий обходной прием:

Пример #10 Изменение элемента в цикле

<?php
// PHP 5
foreach ( $colors as & $color ) <
$color = strtoupper ( $color );
>
unset( $color ); /* это нужно для того, чтобы последующие записи в
$color не меняли последний элемент массива */

// Обходной прием для старых версий
foreach ( $colors as $key => $color ) <
$colors [ $key ] = strtoupper ( $color );
>

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

Следующий пример создает массив, начинающийся с единицы.

Пример #11 Индекс, начинающийся с единицы

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

Пример #12 Заполнение массива

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

Пример #13 Сортировка массива

Поскольку значение массива может быть чем угодно, им также может быть другой массив. Таким образом вы можете создавать рекурсивные и многомерные массивы.

Пример #14 Рекурсивные и многомерные массивы

<?php
$fruits = array ( «фрукты» => array ( «a» => «апельсин» ,
«b» => «банан» ,
«c» => «яблоко»
),
«числа» => array ( 1 ,
2 ,
3 ,
4 ,
5 ,
6
),
«дырки» => array ( «первая» ,
5 => «вторая» ,
«третья»
)
);

// Несколько примеров доступа к значениям предыдущего массива
echo $fruits [ «дырки» ][ 5 ]; // напечатает «вторая»
echo $fruits [ «фрукты» ][ «a» ]; // напечатает «апельсин»
unset( $fruits [ «дырки» ][ 0 ]); // удалит «первая»

// Создаст новый многомерный массив
$juices [ «apple» ][ «green» ] = «good» ;
?>

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

<?php
$arr1 = array( 2 , 3 );
$arr2 = $arr1 ;
$arr2 [] = 4 ; // $arr2 изменился,
// $arr1 все еще array(2, 3)

$arr3 = & $arr1 ;
$arr3 [] = 4 ; // теперь $arr1 и $arr3 одинаковы
?>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *