Массивы в PHP (array in php)

Admin PHP Обсудить

Примеры формирования массивов в PHP.

1. Вывод массива на экран

Для проверки данных в массиве можно использовать два варианта. Первый:

var_dump();

Второй вариант, который я предпочитаю больше, чтобы показать массив в удобочитаемом виде:

echo "<p re style='font-size: 11px'>"; print_r($data2); echo "</p re>";

Примечание: p re — исправить на pre

2. Разделение простого массива на ключ-значение

Разделение простого массива на два параметра: «ключ» и «значение», которые потом можно использовать:

foreach ($array as $k => $v) {
    $new_array['name'][] = $k;
    $new_array['value'][] = $v;
}

3. Удаление данных из массива

foreach($names as $k => $v) {
    if (!in_array($k, $games)) {
        unset($names[$k]);
}

Разбор кода:

1. Перебираем массив, который называется $names, разделив данные на ключ и значение. В данном примере, предположим, ключ это id, а значение не важно.

2. Ищем (перебираем) в массиве $games список всех ключей. Если в первом массиве ($names) такого ключа нет, то из этого же массива ($names) мы его удаляем.

Таким образом, мы уменьшили массив $names. Убрали из него порядковые номера id, которых не было в массиве $games.

4. Соединяем два массива

Имеем 2 массива.

Если в первом массиве есть значение, которое указано в ключе (ключ имеет название name) второго массива, то первому массиву присваиваем это значение.

foreach ($arr2 as $k => $v) {

    if (isset($arr1[$k])) $arr2[$k]['name'] = $arr1[$k];  

}

5. Соединяем массивы по уникальным ключам — переносим значение в ключ

Описание

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

Код

foreach ($array1 as $k => $v) {
    if (isset($array2['keyName'][$k]) == $v) {
        unset($array1[$k]);
        $array[$array2['keyName'][$k]] = $v;
    }
}

Результат

6. Соединяем массивы по уникальным ключам — переносим значение в значение

Описание

Те же массивы, но нам нужно заменить значение ключей, а не сами ключи.

foreach ($array1 as $k => $v) {
    if (isset($array2['keyName'][$k]) == $v) {
        $array[[$k]] = $array2['keyName'][$k];
    }
}

Рузультат

7. Переделка большого многомерного массива

Переделаем большой многомерный массив $data в новый массив. В котором одно из значений переместим в начало массива, а другие значения сделаем его подмассивами.

function our_best_array() {
    foreach ($data as $key => &$value) {
        foreach ($value as $k) {

            foreach ($k as $inside) {
                foreach ($inside as $number) {
                    $new_array[$k[0]]['name'] = $k[0];
                    $new_array[$k[0]][$k[1]]['title'] = $k[1];
                    $new_array[$k[0]][$k[1]][$k[6]][] = $number[0];
                }
            }
        }
    }

return $new_array;
}

Разбор участка кода:

$new_array[$k[0]][$k[1]][$k[6]][] = $number[0];

Мы создаем новый массив с названием $new_array. У него будет главный ключ $k[0], затем будет подмассив состоящий из данных $k[1], а него в свою очередь будет подмассив $k[6], который содержит все данные последнего цикла (самой последней вложенности старого массива) $number[0].

8. Как отсортировать массив

Сортировка массива по ключу. Сначала осуществляем перебор массива с помощью foreach, а затем используя функцию ksort сортируем по ключам. Стоит обратить внимание на флаг SORT_NATURAL, это позволяет сортировать массив по-человечески, когда после единицы всегда 2, а не 11.

// Sort array by key
foreach ($array as $k => $v) {
    ksort($v, SORT_NATURAL);
    $array[$k] = $v;
}

9. Оставляем только уникальные данные в массиве

Перебираем многомерный массив $data.

foreach ($data as $k) {
    $games[] = $k;

    foreach ($games[0] as $k) {
        $names[] = $k[0];
    }
}

А затем формируем новый массив, оставляя только уникальные значения.

$array = array_values(array_unique($names));

10. Функция возврата максимальных значений в многомерном массиве данных

Чтобы найти максимальное значение в одномерном массиве достаточно использовать функцию:

$maxArray = max($array);

Но это не получится сделать, если массив многомерный. Для сортировки многомерного массива по одному из ключей одного из массивов можно воспользоваться другой функцией. Для начала дойти до нужной итерации и внутри неё уже использовать следующую функцию:

$maxArray = maxKey($array);

Содержимое функции:

    function maxKey($array)
    {
        $max = max($array);
        foreach ($array as $k => $v)
        {
            if ($v == $max) return $k;
        }
        return $k;
    }

11. Функция reset

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

reset($array);

Привет. Ты находишься на моём сайте. Я разработчик. Здесь я делюсь своими наработками и знаниями. Спрашивай в комментариях, если тебе что-то не понятно или пиши, если есть что добавить.

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

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

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи: "Массивы в PHP (array in php)".

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

Если вам нужно добавить участок кода ставьте его между тегами <code></code>