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を返す、とあります。
型変換という概念と、==での型の相互変換という概念は、全く異なるもの、ということでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/26 05:16
2019/03/26 05:22 編集
2019/03/26 05:23
2019/03/26 05:24
2019/03/26 05:34
2019/03/26 05:41
2019/03/26 05:48