鉴于这种:
$ids = '';
Run Code Online (Sandbox Code Playgroud)
我才意识到这一点:
$single = $ids == FALSE || is_array($ids)? FALSE : TRUE;
var_dump($single);
Run Code Online (Sandbox Code Playgroud)
还有这个:
if ($ids == FALSE)
{
$single = TRUE;
}
else
{
if (is_array($ids))
{
$single = FALSE;
}
else
{
$single = TRUE;
}
}
var_dump($single);
Run Code Online (Sandbox Code Playgroud)
显示不同的结果(分别为false和true).但是,这仅在变量为:
$ids = '';
Run Code Online (Sandbox Code Playgroud)
要么
$ids;
Run Code Online (Sandbox Code Playgroud)
如果$ ids是一个数组,一个整数或一个字符串,它可以正常工作. 有人知道为什么吗?提前致谢!
顺便说一句,我刚刚意识到,如果你在第一个条件状态(单行第一个)中键入$ ids === FALSE,它将正常工作.但我仍然不明白这背后的"逻辑".
你忘了括号:
$single = (($ids == FALSE) || (is_array($ids)? FALSE : TRUE));
var_dump($single);
// Output: true
Run Code Online (Sandbox Code Playgroud)
没有它们,优先级会给你一个与你期望的结果不同的结果:
<?php
$id = '';
$single = $ids == FALSE || is_array($ids)? FALSE : TRUE;
// ( ( ) )
// FALSE FALSE
var_dump($single); // False
$single = (($ids == FALSE) || (is_array($ids)? FALSE : TRUE));
// TRUE || FALSE
var_dump($single); // True
?>
Run Code Online (Sandbox Code Playgroud)
注意'' == FALSE是true; 我不确定你是否意识到这一点.