일부 매개 변수가있는 함수가 있고 (object)$array
키가 함수 매개 변수 이름과 해당 값에 해당 하는 연관 배열 (또는 공용 속성이있는 단순 객체-거의 동일한 유형 캐스트를 사용할 수 있으므로 거의 동일 )이 있다고 가정합니다. 함수 호출 인수에 해당합니다. 어떻게 부르고 거기에 전달합니까?
<?php
function f($b, $a) { echo "$a$b"; }
// notice that the order of args may differ.
$args = ['a' => 1, 'b' => 2];
call_user_func_array('f', $args); // expected output: 12 ; actual output: 21
f($args); // expected output: 12 ; actual output: ↓
// Fatal error: Uncaught ArgumentCountError:
// Too few arguments to function f(), 1 passed
PHP 8에 도입 된 param unpacking 기능이라는 가변 함수를 사용해야했습니다 ( https://wiki.php.net/rfc/named_params#variadic_functions_and_argument_unpacking ).
f(...$args); // output: 12
PHP 8 이전에는이 코드에서 오류가 발생 Cannot unpack array with string keys
했습니다..
둘째, call_user_func_array
PHP 8에서도 예상대로 작동합니다 ( 설명 은 https://wiki.php.net/rfc/named_params#call_user_func_and_friends 참조 ).
call_user_func_array('f', $args); // output: 12
-이전 버전에서는 여전히 잘못된 '21'을 출력합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다