PHP マニュアル
前のページ | 付録 CPHP/FI 2 から PHP 3 への移行 | 次のページ

# 式の型

PHP/FI 2.0 では、結果の型を決めるのに左辺式を使っていました。 PHP 3.0 では、結果の型を決めるのに両辺を使うようになったので、 3.0 環境の元で 2.0 のスクリプトを実行すると、予期しない結果になる 場合があります。

以下の例を考えてみましょう。

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

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

PHP/FI 2.0 では、この例は $a の 2 つのインデックス双方を表示します。 一方、PHP 3.0 ではなにも表示されません。この理由は、PHP 2.0 では、 左側の引数が文字列なので文字列の比較が行われますが、もちろん `""` は `"0"` とは等しくならない ためです。一方 PHP 3.0 では、文字列が数字と比較されると、（文字列 が数字に変換され、）数字による比較が行われます。`0` は `atoi("")` で比較され、さらに`変数リスト` の方も `0` と評価され、`0==0` なので、その結果ループは 1 度も実行されないということに なります。

これを解決するのは簡単です。while ステートメントを以下のように変更 します。

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

前のページ | ホーム | 次のページ
while の文法 | 上に戻る | エラーメッセージの変更