2014-02-16 29 views
0

我对使用PHP排序多维数组非常困惑。我有喜欢的数组:使用不同类型的索引对多维数组进行排序

array(5) { 
    ["DH"]=> 
    array(3) { 
    ["price"]=> 
    string(5) "19.99" 
    ["merchant"]=> 
    string(16) "DH" 

    } 
    ["17.36"]=> 
    array(6) { 
    ["price"]=> 
    string(5) "17.36" 
    ["merchant"]=> 
    string(8) "Merchant" 
    ["rating"]=> 
    string(6) "95-97%" 
    ["reviews"]=> 
    string(5) "16990" 
    ["time"]=> 
    string(19) "2014-02-12 17:07:02" 

    } 
    ["hug"]=> 
    array(3) { 
    ["price"]=> 
    string(5) "19.99" 
    ["merchant"]=> 
    string(16) "hug" 

    } 
    ["22.95"]=> 
    array(6) { 
    ["price"]=> 
    string(5) "22.95" 
    ["merchant"]=> 
    string(8) "Merchant" 
    ["rating"]=> 
    string(7) "98-100%" 
    ["reviews"]=> 
    string(5) "61043" 
    ["time"]=> 
    string(19) "2014-02-12 17:07:02" 

    } 
    ["24.05"]=> 
    array(6) { 
    ["price"]=> 
    string(5) "24.05" 
    ["merchant"]=> 
    string(8) "Merchant" 
    ["rating"]=> 
    string(6) "90-94%" 
    ["reviews"]=> 
    string(4) "8754" 
    ["time"]=> 
    string(19) "2014-02-12 17:07:02" 

    } 
} 

为我的应用程序需要通过包括“价格”值来订购这些5个阵列由低到高。我已经尝试了很多php documentation提到的功能,但没有找到任何工作解决方案。你有什么想法?我真的被困在这。

感谢您的回复。

回答

0

你想要uasort(它通过用户指定的函数对数组进行排序)。

function sortByPrice($a, $b) 
{ 
    return floatval($b['price']) - floatval($a['price']); 
} 
uasort($assoc, 'sortByPrice'); 


// Keys are intact, but associative array is sorted. 
foreach ($assoc as $key=>$value)... 

你也可以放弃一切成更简单的阵列,使用usort但也有一些额外的步骤,因为你需要首先拼合吧..

$out = array(); 
function sortByPriceSimple($a, $b) 
{ 
    return floatval($b) - floatval($a); 
} 
foreach ($assoc as $value) 
{ 
    $out[] = $value; 
} 
usort($out, 'sortByPriceSimple'); 

// This will be an indexed (0 to N) array. 
foreach ($out as $index=>$value) ... 
+0

谢谢,这很好:) –

+0

然后标记它是正确的。 :) –

-1

你说你试过功能在php.net。你确定ksort不会工作吗? http://us3.php.net/ksort

+0

ksort按键排序,而不是按字段排序。 –

+0

是的,我的错误,只看到了关键的值。一个http://us3.php.net/uasort会给你灵活性。你可以定义它的排序方式。因此,如果密钥不是有效的价格,请使用子元素的价格值。或者在数组中搜索与特定格式匹配的值并将其推入另一个数组。约翰也打败了我:P – Darius

相关问题