当前位置: 首页 > 知识库问答 >
问题:

警告:in_array()要求参数2为数组,给定null(循环)

齐俊达
2023-03-14

我循环两个数组之间的字符串重叠,删除那些有一个值的值,以便只保留$check的空值,在这种情况下是$check[5]。

第二个$check是多维的。

    $names = ["bob", "selena", "hailey", "rob", "justin", "robocop"];

    $check = [
        ["justin"], //bob
        ["justin", "selena", "robocop"],  //selena
        ["justin"], //hailey
        ["justin", "rob"], //rob
        [], //justin
        ["justin", "selena", "bob"] //robocop
    ];


    for ($i = 0; $i < count($names); $i++) {

        for ($j = 0; $j < count($check); $j++) {

            if (in_array($names[$i], $check[$j])) {

                unset($check[$j]);

            }


        }


    }

第一个循环通过$names运行,第二个循环通过$check运行。

如果$names($names[i])中的当前字符串出现在$check($check[j])的当前数组中,则该数组将被删除。

但是,控制台会打印一条警告:in_array()希望参数2是数组,如果给定空值。我觉得这很奇怪,因为$check[j]应该等于$check中的一个数组。

我有什么办法能解决这个问题吗?

共有2个答案

袁建木
2023-03-14

随着不断取消设置$check数组,$check数组的大小将减小。因此,$check不会返回$j的较高值

您可以在这个代码段中做如下的小修改

    $checkcount = count($check);

    for ($i = 0; $i < count($names); $i++) {

    for ($j = 0; $j < $checkcount; $j++) {

        if (isset($check[$j]) && in_array($names[$i], $check[$j])) {

            unset($check[$j]);


        }


    }
呼延永新
2023-03-14

在外部循环的几次迭代之后,您将取消设置大部分$check。对于类似这样的for循环,您指望特定的数字键存在,但由于您取消设置它们,它们的值未定义,即null

您可以通过使用foreach循环来避免这种情况。

foreach ($names as $name) {

    foreach ($check as $key => $array) {

        if (in_array($name, $array)) {

            unset($check[$key]);

        }


    }


}
 类似资料:
  • 当试图向会话添加数据(并检查它是否已经存在)时,我会收到以下警告。 警告:in_array()要求参数2为数组,给定null 我怎样才能解决这个问题? 它所指的代码: 我只有在清洁的浏览器上添加第一个产品时才会收到此警告。当我删除它并添加另一个产品时,警告就消失了。同样,如果我添加第二个产品。

  • 请帮忙。我无法理解这一点,虽然我只是在学习php,但我尝试向现有woocommerce函数添加代码,以便在购物车中有一组产品时删除支付网关。我认为下面第四行“为自动支付如果声明添加”是这里的问题。提前谢谢。

  • 在这种情况下,我的查询工作正常,我已经在mysql上对它们进行了测试。 首先,我有一个自定义查询函数,在MySQLDatabase类中如下所示 然后我有一个类叫用户使用MYSQL类 最后,我以这种方式调用index.php中的方法 以下是一些事实:1。-当我插入数据库中存在的id值时,会出现此警告 警告:mysqli_fetch_array()要求参数1为给定数组的mysqli_结果 2.-当我插

  • 我不知道为什么我会得到这个。我用这个代码显示专辑封面。大多数专辑/子专辑都运行良好。但其中有2个会抛出错误:致命错误[0]:array_key_exists()期望参数2为数组,给定为null 任何指点都将受到高度赞赏。谢谢.

  • 设置一个应该在图像上放置广告的应用程序时,我在运行代码时遇到了这个WordPress错误,这是一个令人沮丧的星期试图修复这个问题。 我希望它能工作,但它给了我以下错误:警告:preg_replace_callback():需要参数2,' 如果有人能想出一个解决方案,那将是惊人的,非常感谢!

  • 我刚刚更新了PHP在我的服务器从PHP 5到PHP 7,我得到了这些警告: 警告:preg_replace_callback()[function.preg-replace-callback0]:要求参数2“chr(\1)”是有效的回调 警告:preg\u replace\u callback() 警告:preg_replace_callback()[function.preg-replace-c