我知道,将变量分配给字符串后,可以通过将变量用作索引数组来表示单个字符,但是为什么下面的代码使用关联数组而不只是死于必需的缺失呢?为什么'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] 删除。
我来说两句