Активный
- Тема Автор
- #1
Массивы - мощная структура данных. Разберем продвинутые техники работы.
Многомерные массивы
Функции для работы с массивами
Сортировка массивов
Объединение массивов
Работа с ключами и значениями
Группировка данных
Трансформация данных
Важные моменты:
- Используйте правильные функции для задач
- Оптимизируйте операции с большими массивами
- Документируйте сложные преобразования
- Тестируйте на разных данных
Массивы - основа работы с данными в PHP!
Многомерные массивы
Код:
<?php
// Двумерный массив
$matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
// Доступ к элементам
echo $matrix[0][0]; // 1
echo $matrix[1][2]; // 6
// Ассоциативный многомерный массив
$users = [
[
"name" => "John",
"age" => 25,
"email" => "john@example.com"
],
[
"name" => "Jane",
"age" => 30,
"email" => "jane@example.com"
]
];
foreach($users as $user) {
echo $user["name"] . " - " . $user["email"] . "\n";
}
?>
Функции для работы с массивами
Код:
<?php
$numbers = [1, 2, 3, 4, 5];
// array_map - применение функции к каждому элементу
$doubled = array_map(function($n) {
return $n * 2;
}, $numbers);
// array_filter - фильтрация
$even = array_filter($numbers, function($n) {
return $n % 2 == 0;
});
// array_reduce - свертка массива
$sum = array_reduce($numbers, function($carry, $item) {
return $carry + $item;
}, 0);
// array_search - поиск
$key = array_search(3, $numbers);
// in_array - проверка наличия
if(in_array(3, $numbers)) {
echo "Найдено";
}
?>
Сортировка массивов
Код:
<?php
$numbers = [3, 1, 4, 1, 5, 9, 2, 6];
// Сортировка по возрастанию
sort($numbers);
// Сортировка по убыванию
rsort($numbers);
// Сохранение ключей
asort($numbers);
arsort($numbers);
// Пользовательская сортировка
usort($numbers, function($a, $b) {
return $a <=> $b;
});
// Сортировка по ключам
ksort($numbers);
krsort($numbers);
?>
Объединение массивов
Код:
<?php
$array1 = ["a" => "red", "b" => "green"];
$array2 = ["c" => "blue", "d" => "yellow"];
// array_merge - объединение
$merged = array_merge($array1, $array2);
// array_combine - создание из двух массивов
$keys = ["name", "age", "city"];
$values = ["John", 25, "New York"];
$combined = array_combine($keys, $values);
// array_intersect - пересечение
$array1 = [1, 2, 3, 4, 5];
$array2 = [3, 4, 5, 6, 7];
$intersection = array_intersect($array1, $array2);
// array_diff - разность
$difference = array_diff($array1, $array2);
?>
Работа с ключами и значениями
Код:
<?php
$array = ["name" => "John", "age" => 25, "city" => "New York"];
// Получение ключей
$keys = array_keys($array);
// Получение значений
$values = array_values($array);
// Проверка существования ключа
if(array_key_exists("name", $array)) {
echo "Ключ существует";
}
// Извлечение части массива
$slice = array_slice($array, 1, 2);
// Удаление части массива
array_splice($array, 1, 1);
?>
Группировка данных
Код:
<?php
$users = [
["name" => "John", "age" => 25, "city" => "New York"],
["name" => "Jane", "age" => 30, "city" => "Los Angeles"],
["name" => "Bob", "age" => 25, "city" => "New York"]
];
// Группировка по возрасту
$groupedByAge = [];
foreach($users as $user) {
$age = $user["age"];
if(!isset($groupedByAge[$age])) {
$groupedByAge[$age] = [];
}
$groupedByAge[$age][] = $user;
}
// Группировка по городу
$groupedByCity = [];
foreach($users as $user) {
$city = $user["city"];
if(!isset($groupedByCity[$city])) {
$groupedByCity[$city] = [];
}
$groupedByCity[$city][] = $user;
}
?>
Трансформация данных
Код:
<?php
$users = [
["id" => 1, "name" => "John", "email" => "john@example.com"],
["id" => 2, "name" => "Jane", "email" => "jane@example.com"]
];
// Преобразование в ассоциативный массив по ID
$usersById = [];
foreach($users as $user) {
$usersById[$user["id"]] = $user;
}
// Извлечение одного поля
$names = array_column($users, "name");
// Извлечение с ключами
$namesById = array_column($users, "name", "id");
?>
Важные моменты:
- Используйте правильные функции для задач
- Оптимизируйте операции с большими массивами
- Документируйте сложные преобразования
- Тестируйте на разных данных
Массивы - основа работы с данными в PHP!