我想创建一个没有重复元素的数组。我首先创建了一个空数组,但在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,因为我稍后需要所有year
,project
和duration
条目。我可以改变数据库。如何修改和使用table2中的唯一ID?谢谢你的建议。
答案 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
,如链接中所述。