Ой, ничего не найдено!

К сожалению, по вашему запросу пока ничего нет (но это только пока!), зато вы можете подписаться на нашу замечательную email-рассылку, чтобы не пропустить самое интересное в будущем.

  • 38

Ловушки и особенности поведения PHP-массивов

  • 1 минута на чтение

⚠️ 1. Строки, похожие на числа, приводятся к числам

$array = [
    '01' => 'one',
    1 => 'uno',
];

print_r($array);

Результат:

Array
(
    [1] => uno
)

🔎 Почему? Потому что '01'1 (PHP считает это числом), и второй элемент затирает первый. В ассоциативной структуре ключи должны быть уникальными.

⚠️ 2. Добавление [] всегда даёт числовой ключ

$array = [];
$array['foo'] = 'bar';
$array[] = 'baz'; // ← добавит под числовым ключом

print_r($array);

Результат:

Array
(
    [foo] => bar
    [0] => baz
)

📌 Важно: [] не "продолжает" последний ключ — он ищет максимальный числовой ключ и увеличивает на 1. Даже если до этого были только строковые.

⚠️ 3. Сброс ключей при array_values()

$array = [
    'id' => 123,
    'name' => 'Alice',
];

$values = array_values($array);

print_r($values);

Результат:

Array
(
    [0] => 123
    [1] => Alice
)

🔎 Все ключи сброшены. Это частая ошибка: после pluck(), map(), values() в Laravel — будьте осторожны с потерей ключей.

Получите 6 месяцев бесплатного хостинга!
Воспользуйтесь нашим промокодом FREE6MONTH и начните свой проект без лишних затрат.

⚠️ 4. Перемешанные ключи — всё равно OK

$array = [
    0 => 'a',
    'foo' => 'b',
    1 => 'c',
    'bar' => 'd',
];

foreach ($array as $key => $value) {
    echo "$key => $value\n";
}

Результат:

0 => a
foo => b
1 => c
bar => d

✅ PHP разрешает любые типы ключей в одном массиве.

⚠️ 5. JSON может всё испортить

$data = [
    '01' => 'one',
    '02' => 'two',
];

echo json_encode($data);

Результат:

{"1":"one","2":"two"}

🔴 Строки '01', '02' становятся просто "1", "2" — потому что JSON не различает строковые и числовые ключи, если это цифры.

📌 Laravel часто использует json_encode()/response()->json(), так что будь внимателен, если важны именно формат и ведущие нули в ключах.

📘 Итог

📌 Важно знать при работе с: JSON, merge, ключами - Строки-числа становятся числами

Эксклюзивно для читателей: полгода бесплатного хостинга!
Заберите свой промокод FREE6MONTH и воспользуйтесь всеми преимуществами премиум-хостинга бесплатно.

📌 Важно знать при: генерации массивов - [] всегда добавляет числовой ключ

📌 Важно знать при: итерации по массиву - Ключи могут быть перемешаны

📌 Важно знать при: фильтрации - array_values() сбрасывает ключи

📌 Важно знать при: использовании API, сериализации - JSON ломает ключи с ведущими нулями

Хостинг, на который можно положиться!
Siteko.net

Устали от медленного хостинга или дорогих тарифов? Тогда вам к нам! Siteko.net — это быстрый и простой хостинг для тех, кто ценит удобство и стабильность.

  • Без падений и нервов — наш uptime почти всегда 100%.
  • Гибкие тарифы — только нужные функции, ничего лишнего.
  • Скорость— сайты грузятся, как пуля!
  • Удобно — разобраться сможет даже новичок, всё под рукой.
  • Поддержка всегда рядом 24/7 поможем решить любой вопрос.

Заходите на Siteko.net и попробуйте нас бесплатно первый месяц! Мы делаем всё, чтобы ваш сайт работал без проблем.

Siteko.net — просто, быстро и надёжно!