Выбор ответа Middle Массивы изнутри обновлено

array_filter и ключи

Вопрос

Что вернёт json_encode(array_filter([1, 0, 2, null, 3]))?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: {"0":1,"2":2,"4":3}. arrayfilter без колбэка убирает ложные значения, но сохраняет ключи: остаются 0, 2 и 4.

Варианты ответа

  1. [1,2,3]
  2. [1,0,2,3]
  3. {"0":1,"2":2,"4":3}правильный ответ
  4. {"0":1,"1":2,"2":3}

Разбор

array_filter без колбэка убирает ложные значения, но сохраняет ключи: остаются 0, 2 и 4. Массив с «дырявыми» ключами уже не список, и json_encode выводит объект. Чтобы получить JSON-массив, добавляют array_values. Проверить, что массив является списком, можно array_is_list (PHP 8.1).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.