按值对多维数组进行排序

问题描述 投票:0回答:1

我有一个这样的数组

Array
(
    [General] => Array
        (
            [Most controversial member] => Array
                (
                    [type] => options
                    [options] => Array
                        (
                            [tooth] => 1
                            [asprin] => 0
                            [sparks] => 1
                        )

                    [totalVoteCount] => 2
                )
        )
)

使用

rsort
函数,我尝试按
options
数组的计数对值进行排序,如下所示:

foreach($data as $title => $array)
{
    foreach($array as $subheading => $key)
    {
        if($key['type'] == 'options')
        {                
            rsort($key['options']);                
        }
    }
}

但是结果仍然没有按降序打印。

期待

现实

我确信我错过了一些明显的东西,但即使在 2 小时后也无法弄清楚:(

更新

我设法进行排序,但按键搞乱了

foreach($data as $key1 => $array)
{
    foreach($array as $key2 => $key)
    {
        if($key['type'] == 'options')
        {   
            rsort($data[$key1][$key2]['options'], SORT_NUMERIC);                        
        }
    }
}

结果如下:

有办法保存密钥吗?即

asprin
tooth
sparks

php arrays sorting
1个回答
0
投票

好的,解决了。

foreach($data as $key1 => $array)
{
    foreach($array as $key2 => $meta)
    {
        if($meta['type'] == 'options')
        {
            arsort($meta['options'], SORT_NUMERIC);                                        
            $data[$key1][$key2]['options'] = $meta['options'];
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.