基于第三个数组排序多维数组

时间:2017-06-16 17:58:39

标签: php arrays sorting multidimensional-array

我想基于label键按字母顺序对多维数组进行排序,并保留原始的category键。我尝试过使用uasort,但似乎没有办法:

uasort($array, function($a, $b) {
    return $a[0]['label'] <=> $b[0]['label'];
});

有人可以帮帮我吗?

我有以下数组:

$array = Array 
(
    [Bier] => Array
    (
        [0] => Array
            (
                [value] => KIT 1
                [label] => Amstel Tray 12 x 50cl
                [picture] => amstel-tray-24-0_5.jpg
            )
            [1] => Array
            (
                [value] => 2
                [label] => Heineken Krat 24 x 30cl
                [picture] => heineken-krat-24-flesjes.jpg
            )
            [2] => Array
            (
                [value] => 4
                [label] => Amstel Tray 24 x 50cl
                [picture] => amstel-tray-24-0_5.jpg
            )

        )
    )
    [Second Category] => [..]
    [Third Category] => [..]
    [..] => [..]
);

提前致谢!

1 个答案:

答案 0 :(得分:0)

问题是你正在用内部数组上的标签值对外部数组进行排序,而实际上你想要的是对每个数组中的项进行排序。尝试循环遍历数组并进行排序。

df.assign(x_cat = lambda v: v.x.apply(lambda x: 'Sucess' if x>=0 else None),
         y_cat = lambda v: v.y.apply(lambda x: 'warning' if -10<=x<0 else None),
         z_cat = lambda v: v.z.apply(lambda x: 'danger' if x<=-10 else None),)

请注意,我也循环遍历引用,如果不这样做,原始数组中的项目将不会被排序。