返回与array_search完全相反的

时间:2014-06-16 00:45:55

标签: php arrays key

想知道是否有一种简单的方法可以做到这一点......?

我需要搜索数组中不存在的值并返回它们的所有键。如果数组中存在该值,我不想要它们的键。除了in_array()之外还有为此设置的PHP函数,因为in_array需要if语句。寻找能够返回另一个数组中不存在的ALL键数组的东西,其值不等于值。

例如:

$array = array('57323' => '23428340', '90234' => '234820345', '29435' => '78283490', '23484' => '213492945');
$value = '78283490';

$arraySearch = array_search($value, $array);

// This would give me $arraySearch = '29435';

但我不想要这个,我想要所有,但是这个!例如,我希望它返回以下内容:

array('57323', '90234', '23484');

有没有办法快速有效地完成这项工作?

我知道我可以这样做:

$anArray = array();
foreach($array as $key => $val)
{
   if ($value != $val)
      $anArray[] = $key;
}

但是,有没有更好的方法来做到这一点,而不是循环,我可以在1行上做这个吗?是否有可用于执行此操作的PHP函数?

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用array_diff。考虑这个例子:

$array = array('57323' => '23428340', '90234' => '234820345', '29435' => '78283490', '23484' => '213492945');
$value = '78283490';

$result = array_diff($array, array($value));
print_r($result);

示例输出:

Array
(
    [57323] => 23428340
    [90234] => 234820345
    [23484] => 213492945
)