我有一个应该包含100,000个项目的数组。 这是我的算法的样子:
$holder = array();
if($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
for($i = 0; $i < mysqli_num_rows($result); $i++)
{
$x = 0;
if($holder[$i]['key'] == $row["key"] && $holder[$i]['value'] == $row["value"] )
{
$x++;
}
if($x == 0)
{
$holder[$row["key"]] = $row["value"];
}
}}
}
它的作用是它选择&#39;键&#39;和&#39;价值&#39;从数据库,检查是否&#39;键&#39;和&#39;价值&#39;如果它们一起出现在这个数组中,那么就什么也不做,否则,添加这个&#39; = && 39; =&gt; &#39;值&#39;到阵列。 问题是,对于100,000行,完成此过程需要很长时间,而且我需要一种能够在短时间内完成此任务的更快的算法。 任何建议都将受到高度赞赏。
答案 0 :(得分:0)
您发布的原始代码似乎有问题..但我会发布您描述的算法
$holder = array(); //the array to be filled
if($result->num_rows > 0) //if database returned results
while($row = $result->fetch_assoc()) //for each returned result
if(!isset($holder[$row["key"]])) //if result not already in array
$holder[$row["key"]] = $row["value"]; //set it
这应该是你可以获得的最快,只需优化代码..更快就需要其他方法