首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PHP中搜索数组的多个值?

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

Stack Overflow用户
提问于 2009-07-31 13:42:19
回答 4查看 77.2K关注 0票数 23

我需要从重复的值中获取键。我试着使用array_search,它工作得很好,但我只得到了第一个值。

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

有没有PHP函数可以做到这一点,或者我需要编写一些多个循环来做到这一点?

代码语言:javascript
复制
$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]);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-07-31 13:47:00

您想要具有搜索值的array_keys

代码语言:javascript
复制
array_keys($list[0], "2009-09-09");

它将返回具有指定值的键的数组,在本例中为0,2。如果您还想查找重复项,可以首先使用array_unique传递,然后在原始数组上使用array_keys遍历该数组;任何返回长度大于1的数组的都是复制项,结果是存储重复项的键。就像..。

代码语言:javascript
复制
$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]
    }

  }
}
票数 35
EN

Stack Overflow用户

发布于 2009-07-31 14:31:09

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

代码语言:javascript
复制
$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
票数 8
EN

Stack Overflow用户

发布于 2009-07-31 13:49:25

PHP手册在Return Value section of the array_search() function documentation中指出,您可以使用array_keys()来完成此任务。您只需要提供第二个参数:

代码语言:javascript
复制
$keys = array_keys($list[0], "2009-09-09");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1212605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档