PHP - array_search未按预期工作 - 工作然后失败



所以我有以下内容:

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_splice。print_r的输出如下。

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

我对第 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
)
)

阅读手册中的警告 http://php.net/manual/en/function.array-search.php. 0 == type杂耍后为 false。你需要:

if (false !== array_search ...

而不是:

if (!array_search...

编辑以添加:第 2 层按预期工作,因为大于零的索引是"真实的"。