>  기사  >  백엔드 개발  >  php5.4_php 스킬에서 참조 전달 시 오류 분석

php5.4_php 스킬에서 참조 전달 시 오류 분석

WBOY
WBOY원래의
2016-05-16 19:59:241180검색

이 기사에서는 php5.4에서 참조를 전달할 때 발생하는 오류 문제를 분석하기 위해 예제를 사용합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

php5.3 시리즈 및 이전 버전에서는 참조 전달에 문제가 없습니다. php5.4로 업그레이드한 후 참조 전달 시 모든 오류가 보고됩니다.

치명적인 오류: F:workwampwwwtesttest.php 6행에서 참조에 의한 호출 시간이 제거되었습니다. 아래 예시를 살펴보세요.

예 1, 재귀적 참조 전송, PHP 5.3 이상에서 테스트 결과

<&#63;php
function test($aa,&$bb){
  if($aa < $bb){
    echo $bb."<br>";
    $bb--;
    test($aa,&$bb);
  }
}
$aa = 3;
$bb = 6;
test($aa,&$bb);
&#63;>

실행 결과는 다음과 같습니다

6
5
4

PHP 5.4 이후에는 작동하지 않습니다. PHP 5.4.11에서 테스트했습니다. 보고됨치명적인 오류: F:workwampwwwtesttest.php 6행에서 참조에 의한 호출 시간 전달이 제거되었습니다.

예제 2, php5.4.11에서 테스트, 참조만 전달

<&#63;php
function test($aa,&$bb){
  if($aa < $bb){
    $bb--;
    echo $bb."<br>";
    //test($aa,&$bb);
  }
}
$aa = 3;
$bb = 6;
test($aa,$bb); //php5.4,php5.3及以前版本,输入结果是5
//test($aa,&$bb); //php5.3输入结果是5,php5.4及以后,报错Fatal error: Call-time pass-by-reference 。。。。
&#63;>

php5.4 이후에는 정의시 &를 가질 수 있습니다. 호출시 &를 추가하면 오류가 발생합니다. 이렇게 부르면 기분이 이상해요.

예제 3, php5.4 및 재귀 참조

<&#63;php
function test($aa,&$bb){
  if($aa < $bb){
    $bb--;
    echo $bb."<br>";
    test($aa,$bb);
  }
}
$aa = 3;
$bb = 6;
test($aa,$bb);
&#63;>

php5.2, php5.3, php5.4를 모두 실행할 수 있습니다. 결과는 다음과 같습니다.

5
4
3

5.3에서 5.4로 업그레이드하는 것은 약간의 부정 행위라고 생각합니다. 변경 사항을 모르면 업그레이드하는 것이 매우 우울할 것입니다.

PHP 오류 및 예외와 관련된 더 많은 콘텐츠에 관심이 있는 독자는 이 사이트의 특별 주제인 "PHP 오류 및 예외 처리 방법 요약"

을 확인할 수 있습니다.

이 기사가 PHP 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.

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