式の型
PHP/FI 2.0 では、結果の型を決めるのに左辺式を使っていました。
PHP 3.0 では、結果の型を決めるのに両辺を使うようになったので、
3.0 環境の元で 2.0 のスクリプトを実行すると、予期しない結果になる
場合があります。
以下の例を考えてみましょう。
PHP/FI 2.0 では、この例は $a の 2 つのインデックス双方を表示します。
一方、PHP 3.0 ではなにも表示されません。この理由は、PHP 2.0 では、
左側の引数が文字列なので文字列の比較が行われますが、もちろん
"" は
"0" とは等しくならない
ためです。一方 PHP 3.0 では、文字列が数字と比較されると、(文字列
が数字に変換され、)数字による比較が行われます。
0
は
atoi("") で比較され、さらに
変数リスト
の方も
0 と評価され、
0==0
なので、その結果ループは 1 度も実行されないということに
なります。
これを解決するのは簡単です。while ステートメントを以下のように変更
します。