표현식 타입

PHP/FI 2.0은 왼쪽의 결과 타입을 한정하는 표현식을 사용했다 used the left side of expressions to determine what type PHP 3.0은 결과 타입을 결정할때 계정으로부터 양쪽을 받는다. 그리고 아마 2.0 스크립트인해 3.0에서는 뜻밖의 반응을 가지게 될 것이다.

이 예제를 검토하라:

$a[0]=5;
$a[1]=7;

$key = key($a);
while ("" != $key) {
    echo "$keyn";
    next($a);
}

PHP/FI 2.0에서는 $a의 인덱스 안의 양쪽 모두 보여준다. PHP 3.0에서는 아무것도 보여주지 않는다. 그 이유는 PHP2.0에 있다 왼쪽 인자의 타입이 문자열비교를 위해 만들어진 문자열이고, 실은 ""과 "0"는 루프를 통하는 동안 같지 않다, PHP 3.0에서는 문자열이 정수비교를 위해 만들어진 정수와 비교될때 (문자열은 정수로 변환된다), atoi("") 비교의 결과는 0 과 variablelist, 0 과 0==0 이후, 루프는 한번도 통하지 못한다.

간단하게 while구문을 바꿈으로써 고쳤다:

while ((string)$key != "") {