>백엔드 개발 >PHP 튜토리얼 >`array_shift()`가 '엄격한 표준: 변수만 참조로 전달되어야 합니다'를 트리거하는 이유는 무엇입니까?

`array_shift()`가 '엄격한 표준: 변수만 참조로 전달되어야 합니다'를 트리거하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-03 17:27:43911검색

Why Does `array_shift()` Trigger

오류 메시지 "엄격한 표준: 변수만 참조로 전달해야 합니다."

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.