Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用不同类型的索引对多维数组排序_Php_Arrays_Sorting_Multidimensional Array - Fatal编程技术网

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"]=>

我对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个阵列。我已经尝试了在上提到的许多函数,但没有找到任何有效的解决方案。你有什么想法吗?我真的被这件事难住了

感谢您的回复。

您需要通过用户指定的函数对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会给你灵活性。您可以定义它的排序方式。因此,如果键不是有效的价格,则使用子元素的价格值。或者在数组中搜索与特定格式匹配的值,然后将这些值推送到另一个数组中。约翰也打败了我