【问题标题】:0 found in empty array在空数组中找到 0
【发布时间】:2016-03-28 23:03:51
【问题描述】:

我正在尝试使用 rand() 函数生成随机数,并确保它们不在 excArray 中。

如果我这样做 print_r(array_values($excArray)) 它返回 Array ( [0] => ) 这意味着它是空的(对吗?)

但是当我做in_array($randInt, $excArray)($randInt is = 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);回声1?

谢谢!

【问题讨论】:

  • 不,array( 0 => ) 意味着你有一个索引为 0 的值,它只是空的。但它会返回 true,因为它存在。
  • 如果你不使用它们,为什么你的函数上有这么多参数?此外,据我所知,您只生成 0 到 1 之间的 rand 数。您的代码对于这么简单的任务来说似乎太复杂了。
  • @PedroLobito 我正在使用它们。我只是发布了我遇到问题的代码。该代码用于生成长 uniqe 代码。

标签: php arrays


【解决方案1】:

Array ( [0] =&gt; ) 表示有 一个 项打印为空字符串,可能是 nullfalse 或...一个空字符串。使用var_dump 而不是print_r 可以查看有关其实际类型的更多信息。从那里你可能会在比较数字和字符串时遇到与类型转换相关的时髦行为......要么使用 in_array(.., .., true) 进行 strict 比较,要么找出你的空项目在那个数组中并避免首先创建它。

【讨论】:

  • 谢谢。 $exclude 参数直接来自一个空的输入字段。使用严格的比较有效。我会尽快将此答案标记为正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 2019-08-17
  • 2014-06-07
  • 1970-01-01
相关资源
最近更新 更多