오류 메시지 "엄격한 표준: 변수만 참조로 전달해야 합니다."
array_shift()를 사용할 때 엄격한 표준을 보고할 수 있습니다. 전달된 인수가 함수 호출의 결과인 경우 경고합니다. 이 동작은 항상 경고를 발생시키지 않기 때문에 일관성이 없어 보입니다.
다음 코드를 고려하세요.
$el = array_shift($instance->find(..))
이 예에서는 find() 메서드가 다음과 같기 때문에 경고가 발생합니다. 변수가 아닙니다. 그러나 다음 코드는 경고를 생성하지 않습니다.
function get_arr(){ return array(1, 2); } $el = array_shift(get_arr());
이 동작을 이해하려면 다른 코드 조각을 분석해 보겠습니다.
error_reporting(E_STRICT); class test { function test_arr(&$a) { var_dump($a); } function get_arr() { return array(1, 2); } } $t = new test; $t->test_arr($t->get_arr());
이 코드는 다음과 같은 이유로 엄격한 표준 경고를 생성합니다. $t->get_arr() 메소드는 변수가 아니며 참조로 전달됩니다. 메서드가 배열 값을 반환하기 때문에 이 동작은 직관에 어긋납니다.
엄격 모드에서 이 오류를 방지하려면 참조 사용을 방지하도록 메서드 시그니처를 변경하거나 중간 변수를 사용하세요.
function test_arr($a) { var_dump($a); } $inter = get_arr(); $el = array_shift($inter);
위 내용은 `array_shift()`가 '엄격한 표준: 변수만 참조로 전달되어야 합니다'를 트리거하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!