Продвинутая работа с массивами в PHP

Активный
Статус
Сообщения
516
Лайки
32

8

месяц на сайте

Массивы - мощная структура данных. Разберем продвинутые техники работы.

Многомерные массивы
Код:
<?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!
 

1 человек читают эту тему (Всего: 1, Пользователей: 0, Гостей: 1)

Сверху