0

我想创建一个没有重复元素的数组。我一开始创建了一个空数组,但是在 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 因为我需要 all和year之后的条目。我可以更改数据库。如何修改和使用table2中的唯一ID?感谢您的建议。projectduration

4

2 回答 2

0

试试这个 PHP 函数:

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

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

于 2013-04-14T01:36:41.873 回答
0

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

内置对 PHP 集合的支持?

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

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

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

于 2013-04-14T02:02:46.513 回答