오류 메시지 "엄격한 표준: 변수만 참조로 전달되어야 합니다."
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);
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3