Php 按键值对关联数组排序

Php 按键值对关联数组排序,php,arrays,sorting,Php,Arrays,Sorting,我试着用php中的DESC按delais_livraison对数组进行排序,但我不知道该怎么做 在第一个级别中,我希望第一个Etoile=>25,然后是Feuillage=>10 编辑: 这就是我的阵列是如何构建的 您似乎在寻找,或者,如果您必须提供自己的比较功能,只需尝试: $data = array( 'A' => array( array('Feuillage' => array('delais_livraison' => 10)),

我试着用php中的DESC按delais_livraison对数组进行排序,但我不知道该怎么做

在第一个级别中,我希望第一个Etoile=>25,然后是Feuillage=>10

编辑: 这就是我的阵列是如何构建的

您似乎在寻找,或者,如果您必须提供自己的比较功能,只需尝试:

$data = array(
    'A' => array(
        array('Feuillage'    => array('delais_livraison' => 10)),
        array('Étoiles'      => array('delais_livraison' => 25)),
    ),
    'B' => array(
        array('Grenouillère' => array('delais_livraison' => 7)),
        array('Chaussons'    => array('delais_livraison' => 0)),
    ),
);

foreach ($data as &$group) {
    usort($group, function($itemA, $itemB){
        $a = current($itemA)['delais_livraison'];
        $b = current($itemB)['delais_livraison'];
        if ($a == $b) return 0;
        return ($a > $b) ? -1 : 1;
    });
}
输出:

array (size=2)
  'A' => 
    array (size=2)
      0 => 
        array (size=1)
          'Étoiles' => 
            array (size=1)
              'delais_livraison' => int 25
      1 => 
        array (size=1)
          'Feuillage' => 
            array (size=1)
              'delais_livraison' => int 10
  'B' => &
    array (size=2)
      0 => 
        array (size=1)
          'Grenouillère' => 
            array (size=1)
              'delais_livraison' => int 7
      1 => 
        array (size=1)
          'Chaussons' => 
            array (size=1)
              'delais_livraison' => int 0
PHP5.3.0中引入的解决方案使用。对于旧版本,只需创建一个函数并在usort函数中指定它:

function my_sort_function($itemA, $itemB){
    // ...
}
usort($group, 'my_sort_function');

由于阵列有两个级别,您希望如何管理全局排序? 是否要对每个子数组a、B等进行排序


在这种情况下,方法是为每个子数组A和B使用函数,并定义自己的比较函数来比较delais_livraison值。

提供所需的输出。尝试使用var_export或json_encode。向我们展示您到目前为止所做的尝试和得到的结果。现在您知道要使用它做什么,最好看看您是如何创建此数组的。它似乎不是专门为这个目的而设计的,也可能不是为任何其他目的而设计的。Hwo是一个可以帮助他的关键排序。当前对我不起作用。我有一个错误解析错误:语法错误,意外的t_函数以秒数击败我,对我很好@路德维希罗德里格斯当你把它复制到你的代码中并更改字段名时,你一定把它搞砸了。您应该只需要将第一个foreach循环中的$data转换为保存数组的变量的名称。
function my_sort_function($itemA, $itemB){
    // ...
}
usort($group, 'my_sort_function');