В переменной $tar формировал массивы, аргументы для функции array_intersect затем вызывал её таким образом.
call_user_func_array(array_intersect,$tar);
Напрямую вызывать не могу так как количество массивов в аргументах заранее не известно.
Теперь PHP говорит, что функции такой нет. Есть мысли как исправить ошибку?
LEOnidUKG
call_user_func_array('array_intersect',$tar);
Если так?
inok-woin
А какой смысл в этой затее?
LEOnidUKG
inok-woin #: А какой смысл в этой затее?
О какой именно? Приводить код согласно документации, которая теперь строгая в PHP 8?
Да не зачем, по сути.
ArbNet
LEOnidUKG #:
Если так?
Uncaught ArgumentCountError: array_intersect() does not accept unknown named parameters
Дело в том что array_intersect это стандартная функция. Теперь я так понимаю нельзя стандартные функции вызывать как callback. Тогда что они могут предложить взамен?
Я использовал данную конструкцию для сортировки данных.
inok-woin #: А какой смысл в этой затее?
Знаете анекдот: «А где оно?» 😀
LEOnidUKG
ArbNet #:
Дело в том что это(array_intersect) стандартная функция. Теперь я так понимаю нельзя стандартные функции вызывать через callback. Тогда что они могут предложить взамен?
Всё она вызывает без проблем.
<?php
$tar[0]=array(‘1’);
$tar[1]=array(‘1’);
call_user_func_array(‘array_intersect’,$tar);
?>
Этот код работает без ошибок. У вас ошибка другая теперь:
https://wiki.php.net/rfc/named_params
ищите по «does not accept unknown named parameters«
-= Serafim =-
inok-woin #: А какой смысл в этой затее?
Странный вопрос.
ArbNet
LEOnidUKG #:
Этот код работает без ошибок.
Я так понимаю они упростили функцию array_intersect, так как раньше она обрабатывала это
До меня дошло 😀 Наверно теперь [htm] и [css] принимаются как именованные аргументы функции, а так как именованных аргументов в array_intersect нет, то выдаёт ошибку.
В некоторых местах придётся переписывать код заново.
ЗЫ. У меня вот функция сортировки получала массив с списком htm, css файлов и если были одинаковые имена, то создавала массив с этими именами(как компонент), а те что без тёски так скажем оставляла в исходном массиве. То есть мне нужны ключи htm и css чтобы если останутся файлы без тёсок выводить их по отдельности. А у которых есть пара(тёска) это компонент который редактируется вместе макет и стили к нему.
SeVlad
LEOnidUKG #: О какой именно? Приводить код согласно документации, которая теперь строгая в PHP 8?
Это бот. Акк 7 лет молчал, а 3 дня назад активизировался.
ArbNet
Предлагаю в этой теме решать вопросы по перенастройке кода с PHP 7 на PHP 8
столкнулся с такой ошибкой:
Fatal error: Uncaught Error: Undefined constant "nodearray_intersect"В переменной $tar формировал массивы, аргументы для функции array_intersect затем вызывал её таким образом.
Напрямую вызывать не могу так как количество массивов в аргументах заранее не известно.
Теперь PHP говорит, что функции такой нет. Есть мысли как исправить ошибку?
LEOnidUKG
call_user_func_array('array_intersect',$tar);Если так?
inok-woin
LEOnidUKG
А какой смысл в этой затее?
О какой именно? Приводить код согласно документации, которая теперь строгая в PHP 8?
Да не зачем, по сути.
ArbNet
Если так?
Дело в том что array_intersect это стандартная функция. Теперь я так понимаю нельзя стандартные функции вызывать как callback. Тогда что они могут предложить взамен?
Я использовал данную конструкцию для сортировки данных.
А какой смысл в этой затее?
Знаете анекдот: «А где оно?» 😀
LEOnidUKG
Дело в том что это(array_intersect) стандартная функция. Теперь я так понимаю нельзя стандартные функции вызывать через callback. Тогда что они могут предложить взамен?
Всё она вызывает без проблем.
<?php
$tar[0]=array(‘1’);
$tar[1]=array(‘1’);
call_user_func_array(‘array_intersect’,$tar);
?>
Этот код работает без ошибок. У вас ошибка другая теперь:
https://wiki.php.net/rfc/named_params
ищите по «does not accept unknown named parameters«
-= Serafim =-
А какой смысл в этой затее?
Странный вопрос.
ArbNet
Этот код работает без ошибок.
Я так понимаю они упростили функцию array_intersect, так как раньше она обрабатывала это
возвращая
Array( [0] => catalog )До меня дошло 😀 Наверно теперь [htm] и [css] принимаются как именованные аргументы функции, а так как именованных аргументов в array_intersect нет, то выдаёт ошибку.
Да. Вот так работает.
Получается теперь нужно убирать ключи.
LEOnidUKG
Можно заюзать как сделал drupal, через функцию:
https://www.php.net/manual/ru/function.array-values.php
call_user_func_array(‘array_intersect’, array_values ($tar));
ArbNet
В некоторых местах придётся переписывать код заново.
ЗЫ. У меня вот функция сортировки получала массив с списком htm, css файлов и если были одинаковые имена, то создавала массив с этими именами(как компонент), а те что без тёски так скажем оставляла в исходном массиве. То есть мне нужны ключи htm и css чтобы если останутся файлы без тёсок выводить их по отдельности. А у которых есть пара(тёска) это компонент который редактируется вместе макет и стили к нему.
SeVlad
О какой именно? Приводить код согласно документации, которая теперь строгая в PHP 8?
Это бот. Акк 7 лет молчал, а 3 дня назад активизировался.