Основи роботи з масивами
Основні функції та прийоми роботи з масивами в PHP8
Всі операції з масивами - Офіц. Сайт.
Операції з масивами:
//Якщо $file - це масив:
//---
//Видаляємо 1 та 0 індекс.
unset($file[0],$file[1]);
//переіндексовуємо індекси що б починались з 0
$file = array_values($file);
//видаляємо індекси без значення
$file = array_diff($file, array('', NULL, false));
//міняємо місцями ключі та їх значення
$file = array_flip($file);
Як показати(подивитись) значення масиву?:
<?php
$cities = array("London", "Paris", "New York");
// Виведемо на екран масив двома способами
Print_r($cities);
echo "<hr>";
var_dump($cities);
?>
/* результат:
* Array ( [0] => London [1] => Paris [2] => New York )
* : array (size=3)
* 0 => string 'London' (length=6)
* 1 => string 'Paris' (length=5)
* 2 => string 'New York' (length=8)
*/
Як перевірити, чи існує ключ у масиві в PHP
Ви можете використовувати PHP-функцію array_key_exists(), щоб перевірити, чи існує цей ключ або індекс у масиві чи ні. Ця функція повертає TRUE у разі успіху або FALSE у разі невдачі.
$cities = array("France"=>"Paris", "India"=>"Mumbai", "UK"=>"London", "USA"=>"New York");
if(array_key_exists("France", $cities)){
echo "Ключ 'France' існує в масиві cities ";
}
Як перетворити масив в строку?
$array = array("red", "green", "blue");
// Перетворює масив в строку
$str = implode(", ", $array);
echo $str;
/* результат:
* red, green, blue
*/
Як перевірити чи є значення в масиві?
Ви можете використовувати PHP-функцію in_array(), щоб перевірити, чи існує значення в масиві чи ні.
<?php
$zoo = array("Lion", "Tiger", "Zebra", "Rhino", "Bear");
if(in_array("Elephant", $zoo)){
echo "Elephant НЕмає у масиві";
}
echo "<br>";
if(in_array("Tiger", $zoo)){
echo "Tiger є в масиві";
}
?>
/* результат:
* Tiger є в масиві
*/
Як видалити перший та останній елемент з масиву в PHP?
Ви можете використовувати функцію PHP array_shift() для видалення першого елемента або значення з масиву. Функція array_shift() повертає також виддалене значення масиву. Однак, якщо масив порожній (або змінна не є масивом), значення, що повертається буде NULL.
<?php
$hobbies = array("Acting", "Drawing", "Music", "Films", "Photography");
// Видалення першого елемента масиву
$removed = array_shift($hobbies);
print_r($hobbies);
echo "<br>";
var_dump($removed);
?>
/* результат:
* Array ( [0] => Drawing [1] => Music [2] => Films [3] => Photography
* :string 'Acting' (length=6)
*/
Відповідно можна і останній елемент видалити за допомогою функції "array_pop()":
// Видалення останього елемента масива
$removed = array_pop($sports);
print_r($sports);
echo "<br>";
var_dump($removed);
/* результат
* Array ( [0] => Baseball [1] => Cricket [2] => Football )
* :string 'Shooting' (length=8)
*/
Як додати на початок та кінець масиву нові значення:
<?php
$skills = array("HTML5", "CSS3", "jаvascript");
// Добавляемо в кінець масиву
array_push($skills, "jQuery", "PHP");
print_r($skills);
// ----- Добавляемо на початок масиву
array_unshift($skills, "jQuery", "PHP");
print_r($skills);
?>
/* результат:
Array ( [0] => HTML5 [1] => CSS3 [2] => jаvascript [3] => jQuery [4] => PHP
-----
Array ( [0] => jQuery [1] => PHP [2] => HTML5 [3] => CSS3 [4] => jаvascript
*/
Як змінити порядок масиву в PHP
Ви можете використовувати PHP-функцію array_reverse(), щоб змінити порядок елементів масиву.
<?php
$colors = array("Red", "Green", "Blue");
// Виведемо перевернутий масив
print_r(array_reverse($colors));
?>
/* результат:
* Array ( [0] => Blue [1] => Green [2] => Red
*/
Як заповнити список, значеннями масиву в PHP?
<form>
<select>
<option selected="selected">Choose one</option>
<?php
// Приклад масиву
$products = array("Mobile", "Laptop", "Tablet", "Camera");
// Проходимо форіч по масиву
foreach($products as $item){
echo '<option value="strtolower($item)">' . $item . '</option>';
}
?>
</select>
<input type="submit" value="Submit">
</form>
Результат:
Як видалити елемент з масиву?
Якщо ви бажаєте видалити елемент із масиву, ви можете просто використовувати функцію unset().
Функція array_splice() приймає три параметри: масив, зміщення (де почати) і довжину (кількість елементів, що видаляються).
$arr1 = array("a" => "Apple", "b" => "Ball", "c" => "Cat");
unset($arr1["b"]);
print_r($arr1);
// Результат: array("a" => "Apple", "c" => "Cat")
$arr2 = array(1, 2, 3);
unset($arr2[1]);
print_r($arr2);
// Результат: array(0 => 1, 2 => 3)
$arr3 = array(1, 2, 3);
array_splice($arr3, 1, 1);
print_r($arr3);
// Результат: array(0 => 1, 1 => 3)
Як в PHP видалити з масиву значення, що повторються?
Ви можете використовувати PHP-функцію array_unique() для видалення елементів, що повторюються, або значень з масиву. Якщо масив містить строкові ключі, ця функція збереже перший знайдений ключ для кожного значення та проігнорує всі наступні ключі.
<?php
$array = array("a" => "moon", "star", "b" => "moon", "star", "sky");
// Видалення елементів що повторюються
$result = array_unique($array);
print_r($result);
?>
/* результат:
* Array ( [a] => moon [0] => star [2] => sky
*/
PHP функція array_filter() для видалення або фільтрації порожніх значень з масиву. Ця функція зазвичай фільтрує значення масиву за допомогою функції зворотного дзвінка.
Однак, якщо функція зворотного виклику не вказана, всі порожні записи масиву будуть видалені, такі як "" (порожній рядок), 0 (0 як ціле число), 0.0 (0 як число з плаваючою комою), "0" (0 як рядок ), NULL, FALSE та array() (порожній масив). Спробуймо на прикладі зрозуміти, як це працює:
$array = array("apple", "", 0, 2, null, -5, "0", "orange", 10, false);
// Фільтрація масива
$result = array_filter($array);
var_dump($result);
// callback-функція щоб зберегти 0
function myFilter($var){
return ($var !== NULL && $var !== FALSE && $var !== "");
}
// Фільтрація масива по фільтру з 0
$result = array_filter($array, "myFilter");
var_dump($result);
/* результат:
: array (size=5)
0 => string 'apple' (length=5)
3 => int 2
5 => int -5
7 => string 'orange' (length=6)
8 => int 10
:array (size=7)
0 => string 'apple' (length=5)
2 => int 0
3 => int 2
5 => int -5
6 => string '0' (length=1)
7 => string 'orange' (length=6)
8 => int 10
*/
Як перебрати багатовимірний масив у PHP?
Ви можете просто використовувати цикл foreach у поєднанні з циклом for для доступу та вилучення всіх ключів, елементів або значень всередині багатовимірного масиву в PHP.
<?php
// Багатомірний масив
$superheroes = array(
"spider-man" => array(
"name" => "Peter Parker",
"email" => "peterparker@mail.com",
),
"super-man" => array(
"name" => "Clark Kent",
"email" => "clarkkent@mail.com",
),
"iron-man" => array(
"name" => "Harry Potter",
"email" => "harrypotter@mail.com",
)
);
// Виводимо усі ключі та значення
$keys = array_keys($superheroes);
for($i = 0; $i < count($superheroes); $i++) {
echo $keys[$i] . "{<br>";
foreach($superheroes[$keys[$i]] as $key => $value) {
echo $key . " : " . $value . "<br>";
}
echo "}<br>";
}
?>
/* результат:
spider-man{
name : Peter Parker
email : peterparker@mail.com
}
super-man{
name : Clark Kent
email : clarkkent@mail.com
}
iron-man{
name : Harry Potter
email : harrypotter@mail.com
}
*/
Як отримати одне конкретне значення з масиву в PHP?
Якщо ви хочете отримати доступ до окремого значення з індексованого, асоціативного або багатовимірного масиву, ви можете зробити це за допомогою індексу чи ключа масиву.
// А. Індексований масив
$sports = array("Baseball", "Cricket", "Football", "Shooting");
// Б. Асоціативний масив
$cities = array("France"=>"Paris", "India"=>"Mumbai", "UK"=>"London", "USA"=>"New York");
// В. Багатомірний масив
$superheroes = array(
array(
"name" => "Peter Parker",
"character" => "Spider-Man",
),
array(
"name" => "Tony Stark",
"character" => "Iron-Man",
),
array(
"name" => "Clark Kent",
"character" => "Super-Man",
)
);
echo $sports[0]; // Результат з масиву А.: Baseball
echo "<br>";
echo $cities["France"]; // Результат з масиву Б.: Paris
echo "<br>";
echo $superheroes[0]["name"]; // Результат з масиву В.: Peter Parker
Як порівняти два значення масиву в PHP
Функція array_diff() повертає значення першому масиві, яких немає у жодному з інших масивів. Приклад:
<?php
$array1 = array("a" => "sky", "star", "moon", "cloud", "moon");
$array2 = array("b" => "sky", "sun", "moon");
// Порівнюємо
$result = array_diff($array1, $array2);
print_r($result);
?>
/* Результат:
* Array ( [0] => star [2] => cloud
*/
Як об'єднати два або більше масивів в один в PHP?
Ви можете використовувати PHP-функцію array_merge() для об'єднання елементів або значень двох або більше масивів у єдиний масив. Злиття відбувається таким чином, що значення одного масиву додаються до кінця попереднього масиву. Давайте подивимося на приклад:
<?php
$array1 = array(1, "fruit" => "banana", 2, "monkey", 3);
$array2 = array("a", "b", "fruit" => "apple", "city" => "paris", 4, "c");
// Обєднання масивів
$result = array_merge($array1, $array2);
print_r($result);
?>
/* результат:
Array ( [0] => 1 [fruit] => apple [1] => 2 [2] => monkey [3] => 3 [4] => a [5] => b [city] => paris [6] => 4 [7] => c
*/
Якщо вхідні масиви містять однакові рядкові ключі, то пізніше значення для цього ключа перезаписуватиме попереднє під час процесу злиття
Як отримати всі ключі масиву та їх значення:
Функція array_keys(), щоб отримати всі ключі з асоціативного масиву.
<?php
$cities = array("France"=>"Paris", "India"=>"Mumbai", "UK"=>"London", "USA"=>"New York");
// Отримуємо ТІЛЬКИ ключі
print_r(array_keys($cities));
// ------- Отримуємо КЛЮЧІ та ЗНАЧЕННЯ
foreach($cities as $key => $value){
echo $key . " : " . $value . "<br>";
}
?>
/* результат:
Array ( [0] => France [1] => India [2] => UK [3] => USA
-------
France : Paris
India : Mumbai
UK : London
USA : New York
*/
Сортування числового масиву та строк:
Функції PHP sort() і rsort() можна використовувати для сортування числових чи індексованих масивів.
$text = array("Sky", "Cloud", "Birds", "Rainbow", "Moon");
$numbers = array(1, 2, 3.5, 5, 8, 10);
// Сортування строк
sort($text);
print_r($text);
echo "<br>";
//результат: Array ( [0] => Birds [1] => Cloud [2] => Moon [3] => Rainbow [4] => Sky
// Сортуваня чисел
sort($numbers);
print_r($numbers);
// результат: Array ( [0] => 1 [1] => 2 [2] => 3.5 [3] => 5 [4] => 8 [5] => 10 )
Як відсортувати асоціативний масив за ключем або значенням у PHP8
Функції PHP ksort() та krsort() можна використовувати для сортування масиву ЗА КЛЮЧЕМ.
Аналогічно функція asort() та arsort() робить сортування массиву ПО ЗНАЧЕННЮ.
<?php
$fruits = array("b"=>"banana", "a"=>"apple", "d"=>"dog", "c"=>"cat");
// Сортування наростаюче
ksort($fruits);
print_r($fruits);
// ---- Сортування спадаюче
krsort($fruits);
print_r($fruits);
?>
/* результат:
Array ( [a] => apple [b] => banana [c] => cat [d] => dog
----
Array ( [d] => dog [c] => cat [b] => banana [a] => apple
*/
Як створити рандомний масив та перемішати його?
// Створюємо масив за доп. функ. range(початкове значення, кінцеве, крок) * 3-й парамет крок - можна не вказувати
$numbers = range(1, 50, 5);
// результат: Array ( [0] => 1 [1] => 6 [2] => 11 [3] => 16 [4] => 21 [5] => 26 [6] => 31 [7] => 36 [8] => 41 [9] => 46
// Перемішуємо елементи масиву
shuffle($numbers);
foreach ($numbers as $value){
print_r ($value . ",");
}
// результат: 16,46,26,41,11,36,1,21,31,6,
Вивести тільки перших 10 значень масиву (Зробити зріз масиву).
$input = array("a", "b", "c", "d", "e");
array_slice($input, 2); // вернет "c", "d" и "e"
array_slice($input, -2, 1); // верне "d"
array_slice($input, 0, 3); // верне "a", "b" и "c"