Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-数组搜索未按预期工作-工作正常,然后失败_Php - Fatal编程技术网

PHP-数组搜索未按预期工作-工作正常,然后失败

PHP-数组搜索未按预期工作-工作正常,然后失败,php,Php,因此,我有以下几点: echo array_search('Resolved at Tier 1', array_column($getHighLevelOverviewPeriodsArray, 'status')); print_r($getHighLevelOverviewPeriodsArray); if (!array_search('Resolved at Tier 1', array_column($getHighLevelOverviewPeriodsA

因此,我有以下几点:

    echo array_search('Resolved at Tier 1', array_column($getHighLevelOverviewPeriodsArray, 'status'));
    print_r($getHighLevelOverviewPeriodsArray);

    if (!array_search('Resolved at Tier 1', array_column($getHighLevelOverviewPeriodsArray, 'status'))) {
        $resolved = array('status' => 'Resolved at Tier 1', 'amount' => 0);
        array_splice($getHighLevelOverviewPeriodsArray, 0, 0, array($resolved));
    }
    print_r($getHighLevelOverviewPeriodsArray);
回声吐出一个正确的零。首先,它确实存在。但是,第二部分运行(if语句)并执行
array\u splice
。打印输出如下所示

即使它在那里,它在执行什么

我有完全相同的代码用于第2层,字符对字符(除了第2层),这与预期的效果一样

Array
(
    [0] => Array
        (
            [status] => Resolved at Tier 1
            [amount] => 10
        )

    [1] => Array
        (
            [status] => Resolved at Tier 2
            [amount] => 7
        )

    [2] => Array
        (
            [status] => Resolved Total
            [amount] => 17
        )

    [3] => Array
        (
            [status] => Phone Calls
            [amount] => 0
        )

)
Array
(
    [0] => Array
        (
            [status] => Resolved at Tier 1
            [amount] => 0
        )

    [1] => Array
        (
            [status] => Resolved at Tier 1
            [amount] => 10
        )

    [2] => Array
        (
            [status] => Resolved at Tier 2
            [amount] => 7
        )

    [3] => Array
        (
            [status] => Resolved Total
            [amount] => 17
        )

    [4] => Array
        (
            [status] => Phone Calls
            [amount] => 0
        )

)

阅读手册中的警告。0==类型转换后为false。你需要:

 if (false !== array_search ...
而不是:

 if (!array_search...

编辑添加:第2层工作正常,因为大于零的索引是“真实的”。

既然$resolved已经是一个数组,为什么在拼接语句的末尾有array($resolved)而不是$resolved?我看到必须这样做,但不管怎样,搜索仍然不起作用。您是否收到任何错误?你检查日志了吗?没有错误。日志中没有任何内容。if(false==数组)的可能重复项\u搜索似乎已对其进行排序