-1

我想知道是否有方法/方法可以更快地對這些類型的數組進行排序(即使它快0.05)。陣列一般都是700 KB大小PHP更快的關聯數組排序

$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因爲我的數組是一個多維關聯數組。

+0

給我們一些樣品數據 –

+0

爲什麼你需要循環兩次?如果數據來自數據庫,那麼爲什麼不讓這些數據排序呢? –

+0

@MarkBaker數據不是來自數據庫,我們從我們轉換成json的API接收xml – user2942945

回答

0

我認爲在每次迭代中進行比較是個壞主意。

你應該把不同的foreach放到不同的if/elseif語句中。

也可以使用array_map()函數。