質問: ``` 0=='ANY';//true ``` この仕様の理由・目的って何ですか?
回答: 文字列から数値のキャストは1文字目から順に数字を探していき、 先頭文字がスペース等の空白文字だった場合は探索を継続しますが、数字以外が出た時点で探索打ち切り。 1文字目がそもそも数値以外の文字だった場合は0として取り扱う仕様です。 私はPHPの作者じゃないので意図を説明しろと言われてもわかりませんが、 多分こう言いたいのだと思います。 PHP作者「だって`"10h"`を`10`って評価したいじゃん!ルール決めしたらこうなった!」 `"10hours"`という文字列は`10`という数値に変換されます。 1文字も数値がなければ`0`になります。(おかしいだろ1個目) `"number_of_7"`を数値にキャストすると`0`になります。(おかしいだろ2個目) この辺の型変換周りの動作は言語毎に実装揺れがありますし、 PHP以外のあんな言語やこんな言語も想定外の糞挙動は結構あります。 この辺の仕様はPHPマニュアルに載ってます。 * 文字列の数値への変換 - PHPマニュアル * PHP 型の比較表 - PHPマニュアル