Php 使用不同类型的索引对多维数组排序
我对PHP中的多维数组排序感到非常困惑。我有一个数组,如:Php 使用不同类型的索引对多维数组排序,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,我对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"]=>
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个阵列。我已经尝试了在上提到的许多函数,但没有找到任何有效的解决方案。你有什么想法吗?我真的被这件事难住了
感谢您的回复。您需要通过用户指定的函数对assoc数组进行排序
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)...
您也可以将所有内容转储到一个更简单的数组中,这是一个用途,但还有一些额外的步骤,因为您需要先将其展平
$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) ...
你说你在php.net上试过这些函数。你确定ksort不行吗 ksort按键排序,而不是按字段排序。是的,我错了,只看到了键的值。A会给你灵活性。您可以定义它的排序方式。因此,如果键不是有效的价格,则使用子元素的价格值。或者在数组中搜索与特定格式匹配的值,然后将这些值推送到另一个数组中。约翰也打败了我