在PHP中,假设我有一个包含许多行和列的mysqli_query结果集。像这样:
supervisor | employee Name | + other columns of data . . .
bob | joe jones
bob | roy ryan
alice | mary doe
alice | dan norris
alice | diane wood
etc.. for many rows
我想要做的是根据名为supervisor的字段进行循环。这样我就可以处理所有的bob记录,然后处理所有的alice记录等。
如何在不循环整个数据集的情况下获取mysqli结果集中列的所有唯一值的列表(并将它们存储在数组中)?
我可以保留列值的变量,然后检查mysqli_fetch_assoc / array()的每次迭代的变化,并检查变量的值是否已经改变但似乎有更好的方法去做。
有更有效的方法吗?
答案 0 :(得分:2)
其他评论/答案对于在SQL中执行此操作提出了很好的观点,但是,如果您正在寻找PHP解决方案,则可以始终执行以下操作:
$unique_supervisors = array_unique(array_column($result_set, 'supervisor'));
(注意:版本5.5中添加了array_column()
函数,因此如果您使用的是古老版本的PHP,最好的选择是SQL或只是循环遍历数组。)
P.S。同等的信用归功于Magnus Eriksson在同一时间发布完全相同的解决方案。
答案 1 :(得分:0)
您可以使用SQL轻松获取不同的管理员值,但是如果您需要为每个管理员获取数据,那么您必须执行n + 1个查询,这通常不理想。
更好的方法是在一个查询中获取所需的所有数据,然后使用PHP处理它。