-1

Я хотел бы знать, есть ли способ/метод. Я мог бы сортировать этот тип быстрее (даже если его 0,05 быстрее). Массив, как правило, 700 размер т.п.н.PHP Ускоренный ассоциативный массив sort

$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 данные не поступают из базы данных, мы получаем xml из API, который мы конвертируем в json – user2942945

ответ

0

Я думаю, что это плохая идея для сравнения на каждой итерации.

Вы должны поместить другой foreach в разные операторы if/elseif.

Также вы можете использовать функцию array_map().