我试图用rand()函数生成随机数,并确保它们不在excArray中。
如果我print_r(array_values($excArray))
,它会返回Array ( [0] => )
,这意味着它是空的(对吗?)
但当我in_array($randInt, $excArray)
($ randInt = 0)或只是echo in_array(0, $excArray);
时,它会返回1
这是我的代码:
function generateCode($char, $int, $prefix, $len, $lenMin, $lenMax, $exclude, $array){
do{
$code = "";
$i = 0;
$excArray = explode(",", $exclude);
echo in_array(0, $excArray);
exit();
while($i++ < $int){
do {
$randInt = rand(0,1);
echo $randInt;
}while(in_array($randInt, $excArray));
$code .= $randInt;
}
为什么echo in_array(0, $excArray)
; echo 1
?
谢谢!
答案 0 :(得分:3)
Array ( [0] => )
表示一个项目打印为空字符串,可能是null
或false
或......一个空字符串。使用var_dump
代替print_r
可以查看有关其实际类型的更多信息。从那里你可能会遇到与数字与字符串比较时类型转换相关的时髦行为...要么使用in_array(.., .., true)
进行严格比较,要么弄清楚你的空项目在该数组中是什么并避免首先创建它。