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

时间:2013-04-14 01:32:11

标签: 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 
            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,因为我稍后需要所有yearprojectduration条目。我可以改变数据库。如何修改和使用table2中的唯一ID?谢谢你的建议。

2 个答案:

答案 0 :(得分:0)

试试这个PHP函数:

http://php.net/manual/en/function.array-unique.php

如果你想使用PHP,它听起来会像你想要的那样。否则,请在SQL中使用DISTINCT关键字,如@zerkms已建议的那样。

答案 1 :(得分:0)

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

Built in support for sets in PHP?

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

对于链接中的内容,PHP最接近集合(及其复杂性保证)是使用数组的索引键来存储数据,而不是数组本身。

但是,如果您不打扰复杂性(如果您的数据集太大或者您执行的插入/删除/搜索过多,则不建议),您也可以使用array_unique,如链接中所述。

相关问题