【问题标题】:PHP: Finding duplicates in multidimensional arrays and echo'ing the resultPHP:在多维数组中查找重复项并回显结果
【发布时间】:2015-07-09 01:11:22
【问题描述】:

我已经被这个问题困扰了一段时间,我在互联网上只能找到如何删除重复项。我是 PHP 新手,非常感谢简单的答案。

假设我有一个包含姓氏、地址、事故时间和事故原因的多维数组,如下所示:

array(
    array(
    'Adams','King Street 12','14:25','Heart Attack'
    ),
    array(
    'Ellis','Vine Street 4','02:48','Broken Leg'
    ),
    array(
    'Adams','Parker Street 43','20:10','Heart Attack'
    )
)

而且我需要找到不止一次发生相同事故的条目,所以对于这个短数组,输出应该是这样的:

Adams   King Street 12   14:25   Heart Attack
Adams   Parker Street 43   20:10   Heart Attack

我试过$answer = array_unique(array_diff_assoc($whole_ar, array_unique( $whole_ar))); 但这似乎不适用于多维数组。

【问题讨论】:

  • 它们是因为Adams 还是AdamsHeart Attack 而相同?
  • 亚当斯和心脏病发作

标签: php arrays multidimensional-array filtering


【解决方案1】:

我想你必须先一步一步地做到这一点,你需要 php5.5 或更高版本,然后放一个 array_column() 在每个键上都是这样的

$myArray = array(
    array(
    'Adams','King Street 12','14:25','Heart Attack'
    ),
    array(
    'Ellis','Vine Street 4','02:48','Broken Leg'
    ),
    array(
    'Adams','Parker Street 43','20:10','Heart Attack'
    )
);

接下来您调用并找到第一个键(名称)的重复项

$name = array_column($myArray, '0');
$address = array_column($myArray, '1');
$time = array_column($myArray, '2');
$injury = array_column($myArray, '3');

接下来我们统计出现次数

$count_names = array_count_values($name);

为每个条件执行此操作

然后使用 if 构造选择适当的数组,

if ($count_names > 0){
...
}

使用 if 构造的结果最终选择合适的数据行

【讨论】:

  • 因为他的目标是事件开关 $count_names$count_injuryarray_count_values($name);array_count_values($injury)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-09
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
  • 1970-01-01
相关资源
最近更新 更多