Деякі особливості роботи з масивами

Матеріал з Вікі ЦДПУ
Перейти до: навігація, пошук

Деякі особливості роботи з масивами

Перетворення в масив (тип array)

Для будь-якого з типів: integer, float</a>, string, boolean і resource, якщо ви перетворите значення в масив, ви отримаєте масив з одним елементом (з індексом 0), що є скалярним значенням, з якого ви почали.

Якщо ви перетворите в масив об'єкт (object), ви отримаєте в якості елементів масиву властивості (змінні-члени) цього об'єкту. Ключами будуть імена змінних-членів.

Якщо ви перетворите в масив значення NULL, ви отримаєте порожній масив.

Порівняння масивів

Масиви можна порівнювати за допомогою функції array_diff() та операторів масивів:

Оператори, що працюють з масивами::

Приклад Назва Результат
$a + $b Об'єднання Об'єднання масиву $a і масиву $b.
$a == $b Дорівнює TRUEв випадку, якщо $a і $b містять одні і тіж елементи.
$a === $b Тотожньо рівно TRUE в випадку, якщо $a і $b містять одні і тіж елементи в тому самому порядку.
$a != $b Не дорівнює TRUE якщо масив $a не дорівнює масиву $b.
$a <> $b Не рівно TRUE якщо масив $a не дорівнює масиву $b.
$a !== $b Тотожньо не рівно TRUE якщо масив $a тотожньо не дорівнює масиву $b.

Приклад порівняння масивів:

<?php
$a
= array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>

Деякі корисні практичні приклади по роботі з масивами

<?php
// это
$a = array( 'color' => 'red',
'taste' => 'sweet',
'shape' => 'round',
'name' => 'apple',
4 // ключом будет 0
);
// полностью соответствует
$a['color'] = 'red';
$a['taste'] = 'sweet';
$a['shape'] = 'round';
$a['name'] = 'apple';
$a[] = 4; // ключом будет 0
$b[] = 'a';
$b[] = 'b';
$b[] = 'c';
// создаст массив array(0 => 'a' , 1 => 'b' , 2 => 'c'),// или просто array('a', 'b', 'c')
?>

Ще один практичний приклад:

<?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();
?>

Коллекция:

<?php
$colors
= array('красный', 'синий', 'зеленый', 'желтый');
foreach (
$colors as $color) {
echo
"Вам нравится $color?\n";
}
?>

Результат роботи розглянутого скрипта:

Вам подобається червоний?
Вам подобається синій?
Вам подобається зелений? 
Вам подобається жовтий? 

Наступний приклад:

<?php
$firstquarter
= array(1 => 'Январь', 'Февраль', 'Март');
print_r($firstquarter);
?>

Результат роботи наведеного скрипта буде наступний:

Array 
(
    [1] => 'Январь'
    [2] => 'Февраль'
    [3] => 'Март'
)

Приклад заповнення масиву:

<?php
// заполняет массив всеми элементами директории
$handle = opendir('.');
while (
false !== ($file = readdir($handle))) {
$files[] = $file;
}
closedir($handle);
?>

Упорядкування масивів. Ви можете змінювати порядок елементів, використовуючи різні функції сортування. Для додаткової інформації дивіться розділ функції для роботи з масивами. Ви можете підрахувати кількість елементів у масиві, використовуючи функцію count()</.

Рекурсивні та багатовимірні масиви:

<?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["яблоко"]["зеленое"] = "хорошее";
?>

Зверніть увагу, що при присвоєнні масиву завжди відбувається копіювання значення. Щоб копіювати масив за посиланням, вам потрібно використовувати оператор посилання:

<?php
$arr1
= array(2, 3);
$arr2 = $arr1;
$arr2[] = 4; // $arr2 изменился,
// $arr1 по прежнему array(2,3)
$arr3 = &$arr1;
$arr3[] = 4; // теперь $arr1 и $arr3 эквивалентны
?>