如何减少向数组添加值的时间?

时间:2015-07-23 16:25:19

标签: php sql arrays algorithm

我有一个应该包含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行,完成此过程需要很长时间,而且我需要一种能够在短时间内完成此任务的更快的算法。 任何建议都将受到高度赞赏。

1 个答案:

答案 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

这应该是你可以获得的最快,只需优化代码..更快就需要其他方法