質問: PHPにおいて、任意の文字列の数値への型変換は0となっていますが、どうにも気持ち悪い定義だと思いました。 というのも、数値と文字列のブール値への型変換は、 数値1はtrue、数値0はfalseであり、 空でない任意の(数字でない)文字列はtrue、空の文字列''はfalse、 という対応なっているからです。 ならば、文字列の数値への型変換は、 空でない任意の文字列を1に、 空の文字列''を0に、 それぞれ対応させるべきだと思います。 どう思いますか? ご回答お待ちしております。 ...と、 書いていて気づきましたが、そういえば、特に文字列のゼロ'0'のことを考えると、 「文字列ゼロ'0'と数値ゼロ0の対応は崩したくない」 「そのためには、任意の文字列の数値1への対応、という対称性は犠牲にするしかない」 という意図が篭っているのではないか、と思いました。 【追記】 maisumakun様のご指摘を受けて 確かにそうでした。 しかし、以下のマニュアルの==演算子の緩い型変換比較表 https://www.php.net/manual/ja/types.comparisons.php においては、 例えば文字列'php'は数値0との比較でtrueを返し、数値1との比較でfalseを返す、とあります。 型変換という概念と、==での型の相互変換という概念は、全く異なるもの、ということでしょうか。
回答: > > PHPにおいて、任意の文字列の数値への型変換は0となっていますが > > > なっていません。たとえば`(int)'500万円'`は`500`です。