変数にstingを割り当てると、変数をインデックス付き配列として使用することで個々の文字を表現できることを理解していますが、連想配列を使用する以下のコードは、必要なものが不足しているだけでなく、なぜ死ぬのですか?絶対に存在しない配列キーに対して「isset」がFALSEをスローしないのはなぜですか?
unset($a);
$a = 'TESTSTRING';
if(!isset($a['anystring'])){
die('MISSING REQUIRED');
}else{
var_dump($a['anystring']);
}
上記の例は次のように出力します。
string(1) "T"
編集:
Jelle Keiserが示しているように、これはおそらくより安全な方法です。
if(!array_key_exists('required',$_POST)){
die('MISSING REQUIRED');
}else{
echo $_POST['required'];
}
PHPが行っているのは、文字列を数値インデックスとして使用することです。この場合、'anystring'
はと同等です0
。あなたはこれを行うことによってこれをテストすることができます
<?php
echo (int)'anystring';
// 0
var_dump('anystring' == 0);
// bool(true)
PHPは多くの型ジャグリングを行うため、「興味深い」結果が得られる可能性があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加