如何在PHP中搜索数组中的多个值?

2022-08-30 18:08:24

我需要从重复的值中获取键。我试图使用array_search,效果很好,但我只得到了第一个值作为命中。

我需要从重复值中获取两个键,在本例中为 0 和 2。将搜索结果输出为数组会很好。

是否有PHP函数可以执行此操作,或者我是否需要编写一些多个循环来执行此操作?

$list[0][0] = "2009-09-09";
$list[0][1] = "2009-05-05";
$list[0][2] = "2009-09-09";
$list[1][0] = "first-paid";
$list[1][1] = "1";
$list[1][2] = "last-unpaid";

echo array_search("2009-09-09",$list[0]);

答案 1

您希望使用搜索值array_keys

array_keys($list[0], "2009-09-09");

这将返回具有指定值的键数组,在本例中为 [0, 2]。如果您还想查找重复项,可以先使用array_unique进行传递,然后使用原始数组上的array_keys迭代该数组;任何返回长度> 1 的数组都是重复的,结果是存储重复项的键。像这样...

$uniqueKeys = array_unique($list[0])

foreach ($uniqueKeys as $uniqueKey)
{
  $v = array_keys($list[0], $uniqueKey);

  if (count($v) > 1)
  {
    foreach ($v as $key)
    {
      // Work with $list[0][$key]
    }

  }
}

答案 2

array_search()中,我们可以读到:

如果在大海捞针中多次发现针,则返回第一个匹配键。要返回所有匹配值的键,请改用 array_keys() 和可选参数。search_value