按列唯一的 PHP 数组

标签 php

如何根据一列或多列过滤数组以提供唯一元素。示例:

array(
    array('name'=>'toto', 'type'=>'1', 'type2'=> '2')
    array('name'=>'tata', 'type'=>'1', 'type2'=> '3')
    array('name'=>'titi', 'type'=>'1', 'type2'=> '2')
    array('name'=>'tutu', 'type'=>'2', 'type2'=> '4')
    array('name'=>'tete', 'type'=>'3', 'type2'=> '2')
)

如果我们选择 type 和 type2 作为唯一列。算法的结果应该给

array(
    array('name'=>'toto', 'type'=>'1', 'type2'=> '2')
    array('name'=>'tata', 'type'=>'1', 'type2'=> '3')
    array('name'=>'tutu', 'type'=>'2', 'type2'=> '4')
    array('name'=>'tete', 'type'=>'3', 'type2'=> '2')
)

我可以想到一种算法,通过散列类型与 type2 连接,存储在表中并使用 isset 来查找存在。但我不确定这是最好的算法。

最佳答案

你只需要

$data = array(
    array('name'=>'toto', 'type'=>'1', 'type2'=> '2'),
    array('name'=>'tata', 'type'=>'1', 'type2'=> '3'),
    array('name'=>'titi', 'type'=>'1', 'type2'=> '2'),
    array('name'=>'tutu', 'type'=>'2', 'type2'=> '4'),
    array('name'=>'tete', 'type'=>'3', 'type2'=> '2')
);


$tmp = array();
foreach($data as $v) {
    $id = $v['type'] . "|" . $v['type2'];
    isset($tmp[$id]) or $tmp[$id] = $v;
}
print_r(array_values($tmp));

关于按列唯一的 PHP 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16419414/

相关文章:

php - 使用 PHP 的 echo 编写 HTML 与编写纯 HTML 会导致性能上的差异吗?

php - Ajax多维表单数据,格式与$_POST相同

php - PHP 和 C++ 之间的安全套接字通信

javascript - 如何将 PHP 'while loop' 插入 JavaScript 代码?

php - 为什么 laravel 会出现应用程序错误

php - 输入 html 的月份不允许从数据库获取动态日期?

php - MySQL 语法错误 1064 与 INSERT 语句

php - 将 CSV 文件导入 MySQL 数据库

php - 搜索我的数据库

php - 如果表2在某些条件下包含相同的值,则从表1中删除行 mysql