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

Jen*_*ell 21 php arrays search key duplicates

我需要从重复的值中获取密钥.我尝试使用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]);
Run Code Online (Sandbox Code Playgroud)

Ada*_*ght 27

您希望array_keys具有搜索值

array_keys($list[0], "2009-09-09");
Run Code Online (Sandbox Code Playgroud)

在你的情况下[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]
    }

  }
}
Run Code Online (Sandbox Code Playgroud)


pal*_*rom 10

array_search()我们可以看到:

如果在haystack中多次找到needle,则返回第一个匹配的键.要返回所有匹配值的键,请使用array_keys()可选search_value参数.


Til*_*eis 7

以下函数调用组合将为您提供所有重复值:

$a = array(1, 1, 2, 3, 4, 5, 99, 2, 5, 2);

$unique     = array_unique($a); // preserves keys
$diffkeys   = array_diff_key($a, $unique);
$duplicates = array_unique($diffkeys);

echo 'Duplicates: ' . join(' ', $duplicates) . "\n"; // 1 2 5
Run Code Online (Sandbox Code Playgroud)