PHP更快的关联数组排序

时间:2016-08-21 16:37:34

标签: php sorting optimization multidimensional-array associative-array

我想知道是否有一种方法/方法可以更快地对这些数组进行排序(即使它的速度提高了0.05)。阵列通常为700 kb大小

$price_posi = array();

$i = 0;
foreach ($results["items"] as $one_item)
{
    if($a == 1)
    {
        $price_posi[i] =  $one_item["price"]["paxgroup"][0]["cost"] + $one_item["price"]["paxgroup"][0]["othertotal"];
    }
    else if($b == 1)
    {
        $price_posi[i] =  $one_item["price"]["paxgroup"][0]["cost"];
    }
    else if($c == 1)
    {
        $price_posi[i] =  $one_item["price"]["paxgroup"][0]["wholesale"] + $one_item["price"]["paxgroup"][0]["othertotal"];
    }
    else if($d == 1)
    {
        $price_posi[i] =  $one_item["price"]["paxgroup"][0]["wholesale"];
    }

    // Other actions on $results ....

    $i++;
}

asort ($price_posi);

$sorted_results = array();
$i = 0;

foreach ($price_posi as $key => $price)
{
    $sorted_results["items"][$i] = $results["items"][$key];
    $i++;
}

$sorted_results["segments"] = $results["segments"];

$results = $sorted_results;

我知道asort已经非常快了但我必须循环我的数组2次才能使用asort,因为我的数组是一个多维关联数组。

1 个答案:

答案 0 :(得分:0)

我认为在每次迭代中进行比较是个坏主意。

您应该将不同的foreach放入不同的if / elseif语句中。

您也可以使用array_map()功能。