$arr = array(
'test' => array(
'soap' => true,
),
);
$input = 'hey';
if (in_array($input, $arr['test'])) {
echo $input . ' is apparently in the array?';
}
Run Code Online (Sandbox Code Playgroud)
结果:嘿显然在阵列中?
这对我没有任何意义,请解释原因.我该如何解决这个问题?
Ja͢*_*͢ck 11
这是因为true == 'hey'由于类型戏法.你在寻找的是:
if (in_array($input, $arr['test'], true)) {
Run Code Online (Sandbox Code Playgroud)
它强制进行基于===而不是的等式测试==.
in_array('hey', array('soap' => true)); // true
in_array('hey', array('soap' => true), true); // false
Run Code Online (Sandbox Code Playgroud)
为了更好地理解类型杂耍你可以玩这个:
var_dump(true == 'hey'); // true (because 'hey' evaluates to true)
var_dump(true === 'hey'); // false (because strings and booleans are different type)
Run Code Online (Sandbox Code Playgroud)
更新
如果你想知道是否设置了数组键(而不是存在一个值),你应该这样使用isset():
if (isset($arr['test'][$input])) {
// array key $input is present in $arr['test']
// i.e. $arr['test']['hey'] is present
}
Run Code Online (Sandbox Code Playgroud)
更新2
还array_key_exists()可以测试阵列密钥的存在; 但是,只有在相应的数组值有可能的情况下才应该使用它null.
if (array_key_exists($input, $arr['test'])) {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
295 次 |
| 最近记录: |