PHP 매뉴얼
이전 | D. 부록. PHP/FI 2 에서 PHP 3로 이주하기 | 다음

# 표현식 타입

PHP/FI 2.0은 결과값이 무슨 타입이 되어야 할지 결정하기 위해 표현식의 좌변을 사용한다. 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에서는 아무것도 출력되지 않을것이다. 그 이유는 PHP 2.0 안에서 좌측 인자의 타입이 문자열이고, 문자열 비교가 수행되고, `""`는 `"0"`과 같지 않아서 루프를 계속 돌기 때문이다. PHP 3.0에서는, 문자열이 정수와 비교될때, 정수 비교가 수행된다(문자열은 정수로 변환됨). `0`이 되는 `atoi("")`와 비교되는데 `variablelist`도 `0`이 있어서, `0==0`이기 때문에, 루프는 한번도 수행되지 않는다.

이것에 대한 변경은 간단하다. 다음과 같은 while 구문으로 변경한다:

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

이전 | 처음으로 | 다음
while 문법 | 위로 | 변경된 에러 메시지