これは絶対的な狂気です。今日、常に単一の文字に評価されるはずの投稿変数をテストしていました。サンプルコードは...
if($_POST['status'] == '' || $_POST['status'] == 0){ die('oh no!'); }
P のステータスを渡すと、die ステートメントを実行していました。次に、次のコードで PHP ファイルを作成しました...
echo 'P1: '.intval($_POST['status']=='').'<br />';
echo 'P2: '.intval($_POST['status']==0).'<br />';
echo 'P3: '.intval('P'==0).'<br />';
何だと思う?P2 と P3 は両方とも TRUE と評価されます。intval は、P1 に何も表示しないのではなく、0 を表示するためだけに存在します。
これは PHP の既知のバグですか? これは、私が実行しているバージョンで壊れているだけですか? 率直に言って、なぜこれを行っているのか、私は完全に途方に暮れています。トリプルイコールを使用して正しく評価されますが、ダブルでは評価されません。私の本では、Pは間違いなく0に等しくありません...