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

array_shift()를 사용할 때 PHP가 '엄격한 표준: 변수만 참조로 전달해야 합니다'를 발행하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-20 07:39:11
원래의
655명이 탐색했습니다.

Why Does PHP Issue

PHP의 참조 전달 이해: 엄격한 표준 및 Array_Shift()

PHP에서 엄격한 표준 모드는 변수가 아닌 값을 참조로 전달할 때 경고를 발행할 수 있습니다. 이에 대한 일반적인 예는 array_shift() 함수를 사용할 때입니다.

경고는 언제 발생합니까?

"엄격한 표준: 변수만 참조로 전달해야 합니다." 경고는 array_shift( )은 변수가 아닌 값을 인수로 전달하여 사용됩니다. 예를 들면 다음과 같습니다.

$instance = new MyClass();
$el = array_shift($instance->find(...)); // Warning
로그인 후 복사

반대로, array_shift()가 배열이 포함된 변수와 함께 호출되면 경고가 생성되지 않습니다.

function get_arr() {
    return [1, 2];
}
$el = array_shift(get_arr()); // No warning
로그인 후 복사

비직관적인 동작

array_shift()는 배열 값을 반환하는 함수이기 때문에 경고가 혼동될 수 있습니다. 그러나 엄격 모드에서 PHP는 array_shift()의 반환 값을 변수가 아닌 것으로 간주합니다.

경고 해결

엄격 모드에서 경고를 해결하려면 다음 두 가지 옵션이 있습니다.

  1. 메서드 서명 수정: 배열을 반환하는 메서드의 서명을 변경하여 참조.
  2. 중간 변수 사용: 메서드에서 반환된 배열을 array_shift()에 전달하기 전에 중간 변수에 할당합니다.

예를 들어 :

// Modify Method Signature
function get_arr() {
    return [1, 2];
}
$instance = new MyClass();
$el = array_shift($instance->get_arr());

// Use Intermediate Variable
$el = array_shift($instance->get_arr() ?: []);
로그인 후 복사

위 내용은 array_shift()를 사용할 때 PHP가 '엄격한 표준: 변수만 참조로 전달해야 합니다'를 발행하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿