#php #array-map #php-8
#php #array-map #php-8
Вопрос:
Я немного поиграл с функцией array_map в php и подумал об использовании ее с именованными аргументами, так как порядок параметров всегда меня раздражает. (Функции не делают ничего полезного. Просто нужно было что-то протестировать.)
Пока все хорошо, работает так, как ожидалось:
$testArray = [
'a' => [],
'b' => [1, 2, 3],
];
$result = array_map(array: $testArray, callback: fn (array $arr) => count($arr) === 0 ? null : $arr);
(Даже если мне потребовалось некоторое время, чтобы выяснить имя параметра массива, поскольку это задокументировано как array1
в немецких документах. Но это то, чем я займусь, как только у меня появится на это время.)
Но затем я попытался вызвать функцию с большим количеством параметров.
Итак, моя первая попытка:
array_map(array: $testArray, callback: fn (array $arr) => count($arr) === 0 ? null : $arr, []);
Неустранимая ошибка: невозможно использовать позиционный аргумент после именованного аргумента в
Я узнал, что я не должен передавать позиционные аргументы после именованных аргументов.
Затем наоборот:
array_map([], array: $testArray, callback: fn (array $arr) => count($arr) === 0 ? null : $arr);
Неустранимая ошибка: неперехваченная ошибка: именованный параметр $callback перезаписывает предыдущий аргумент в
Хорошо. Он принимает первый параметр в качестве первого позиционного параметра и сбивается с толку, поскольку я перезаписываю его.
Я начал гуглить. Хорошо, неизвестные именованные аргументы передаются переменным параметрам. Давайте попробуем:
array_map(array: $testArray, callback: fn (array $arr) => count($arr) === 0 ? null : $arr, additional: []);
Неустранимая ошибка: неперехваченный аргумент: array_map() не принимает неизвестные именованные параметры
Итак … есть ли какой-нибудь способ сделать это? Я даже посетил rfc об именованных аргументах, но не нашел ничего похожего на решение. Не могли бы вы, ребята, дать мне подсказку о том, как это сделать?
Комментарии:
1. Это действительно хороший вопрос, и я думаю, что примечание Никиты в этом отчете об ошибке — это почти то же самое. (Сама ошибка напрямую не связана, только примечание.)