Php 创建一个没有重复元素的数组

Php 创建一个没有重复元素的数组,php,Php,我想创建一个没有重复元素的数组。起初我创建了一个空数组,但在PHP中这样做毫无意义。更好的方法 表1: Id Name 表2: Id Year PROJECT DURATION 1 2012 A 3 1 2012 B 2 获取数据: $sql = $mysqli->prepare(SELECT Name, Table1.Id, Year FROM Table1 JOIN Table2

我想创建一个没有重复元素的数组。起初我创建了一个空数组,但在PHP中这样做毫无意义。更好的方法

表1:

Id Name
表2:

Id Year PROJECT DURATION
1  2012  A      3
1  2012  B      2
获取数据:

$sql = $mysqli->prepare(SELECT Name, 
            Table1.Id, 
            Year
            FROM Table1 JOIN Table2 
            WHERE Table1.Id=Table2.Id
            ORDER BY Id);
$sql->execute();
$result = $sql->get_result();

$Id[]=array();

while($row = $result->fetch_assoc()){

    if (!in_array($row["Id"], $Id)){
        $Id[]=$row["Id"];
        ...
    }
}
我不使用DISTINCT,因为我以后需要所有
项目
持续时间
条目。我可以更改数据库。如何修改和使用表2中的唯一Id?谢谢你的建议

试试这个PHP函数:


如果你想使用PHP,它听起来会做你想做的事情。否则,请按照@zerkms的建议在SQL中使用DISTINCT关键字。

我想说它并不完全是重复的,因为OP可能不知道集合数据结构,这是一个在许多语言中都可用的概念,但在Stack Oveflow中还有另一个问题:

为了解释,集合数据结构是一种数据类型,它包含其他元素(如数组),但保证它们在集合中是唯一的,通常保证插入、删除和搜索的低复杂性(O(1)或O(logn),具体取决于实现)

从链接来看,PHP最接近集合(及其复杂性保证)的地方是使用数组的索引键来存储数据,而不是数组本身


但是如果您不担心复杂性(如果您的数据集太大或执行了太多的插入/删除/搜索,则不建议这样做),您可以只使用
array\u unique
,链接中也提到了这一点。

从系统中选择不同的Id
数据必须有意义吗?你只是想从SQL查询中过滤重复的数据吗?修复你的数据库,怎么可能有重复的ID?是的,数据必须有意义。