Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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_Organization_Usort - Fatal编程技术网

PHP排序多维数组

PHP排序多维数组,php,arrays,organization,usort,Php,Arrays,Organization,Usort,我有一个如下所示的数组: Array ( [13] => Array ( [name] => Blah blah [description] => Blah blah blah [parent_group_id] => 8 [display] => Blah : Blah [stamps] => Array

我有一个如下所示的数组:

Array
(
[13] => Array
        (
            [name] => Blah blah
            [description] => Blah blah blah
            [parent_group_id] => 8
            [display] => Blah : Blah
            [stamps] => Array
                (
                    [73] => Array
                        (
                            [stamp_id] => 73
                            [name] => Blah
                            [is_member] => 
                            [rank] => 2          <--
                            [description] => Blah blah blah
                            [rank_token] => easy
                        )
                    [80] => Array
                        (
                            [stamp_id] => 80
                            [name] => Blah
                            [is_member] => 
                            [rank] => 1          <--
                            [description] => Blah blah blah
                            [rank_token] => medium
                        )
                    [73] => Array
                        (
                            [stamp_id] => 73
                            [name] => Blah
                            [is_member] => 
                            [rank] => 4          <--
                            [description] => Blah blah blah
                            [rank_token] => easy
                        )

                    [80] => Array
                        (
                            [stamp_id] => 80
                            [name] => Blah
                            [is_member] => 
                            [rank] => 3          <--
                            [description] => Blah blah blah
                            [rank_token] => medium
                        )
                 )
          )
)
Array
(
[13] => Array
        (
            [name] => Blah blah
            [description] => Blah blah blah
            [parent_group_id] => 8
            [display] => Blah : Blah
            [stamps] => Array
                (
                    [80] => Array
                        (
                            [stamp_id] => 80
                            [name] => Blah
                            [is_member] => 
                            [rank] => 1          <--
                            [description] => Blah blah blah
                            [rank_token] => medium
                        )
                    [73] => Array
                        (
                            [stamp_id] => 73
                            [name] => Blah
                            [is_member] => 
                            [rank] => 2          <--
                            [description] => Blah blah blah
                            [rank_token] => easy
                        )
                    [80] => Array
                        (
                            [stamp_id] => 80
                            [name] => Blah
                            [is_member] => 
                            [rank] => 3          <--
                            [description] => Blah blah blah
                            [rank_token] => medium
                        )
                    [73] => Array
                        (
                            [stamp_id] => 73
                            [name] => Blah
                            [is_member] => 
                            [rank] => 4          <--
                            [description] => Blah blah blah
                            [rank_token] => easy
                        )
                 )
          )
)
数组
(
[13] =>阵列
(
[名称]=>诸如此类
[说明]=>诸如此类
[父组id]=>8
[显示]=>诸如此类:诸如此类
[邮票]=>阵列
(
[73]=>阵列
(
[邮票编号]=>73
[名称]=>诸如此类
[is_成员]=>
[排名]=>2等等等等
[rank_token]=>简单
)
[80]=>阵列
(
[邮票编号]=>80
[名称]=>诸如此类
[is_成员]=>
[排名]=>1诸如此类诸如此类
[rank_token]=>中等
)
[73]=>阵列
(
[邮票编号]=>73
[名称]=>诸如此类
[is_成员]=>
[排名]=>4诸如此类诸如此类
[rank_token]=>简单
)
[80]=>阵列
(
[邮票编号]=>80
[名称]=>诸如此类
[is_成员]=>
[排名]=>3诸如此类诸如此类
[rank_token]=>中等
)
)
)
)
但是,我想按照['rank']所包含的数字对数组中的对象进行排序,即1、2、3和4。(我在代码示例中添加了箭头)因此在使用usort后,我希望所有内容都按数字顺序排序。所以我希望它看起来像这样:

Array
(
[13] => Array
        (
            [name] => Blah blah
            [description] => Blah blah blah
            [parent_group_id] => 8
            [display] => Blah : Blah
            [stamps] => Array
                (
                    [73] => Array
                        (
                            [stamp_id] => 73
                            [name] => Blah
                            [is_member] => 
                            [rank] => 2          <--
                            [description] => Blah blah blah
                            [rank_token] => easy
                        )
                    [80] => Array
                        (
                            [stamp_id] => 80
                            [name] => Blah
                            [is_member] => 
                            [rank] => 1          <--
                            [description] => Blah blah blah
                            [rank_token] => medium
                        )
                    [73] => Array
                        (
                            [stamp_id] => 73
                            [name] => Blah
                            [is_member] => 
                            [rank] => 4          <--
                            [description] => Blah blah blah
                            [rank_token] => easy
                        )

                    [80] => Array
                        (
                            [stamp_id] => 80
                            [name] => Blah
                            [is_member] => 
                            [rank] => 3          <--
                            [description] => Blah blah blah
                            [rank_token] => medium
                        )
                 )
          )
)
Array
(
[13] => Array
        (
            [name] => Blah blah
            [description] => Blah blah blah
            [parent_group_id] => 8
            [display] => Blah : Blah
            [stamps] => Array
                (
                    [80] => Array
                        (
                            [stamp_id] => 80
                            [name] => Blah
                            [is_member] => 
                            [rank] => 1          <--
                            [description] => Blah blah blah
                            [rank_token] => medium
                        )
                    [73] => Array
                        (
                            [stamp_id] => 73
                            [name] => Blah
                            [is_member] => 
                            [rank] => 2          <--
                            [description] => Blah blah blah
                            [rank_token] => easy
                        )
                    [80] => Array
                        (
                            [stamp_id] => 80
                            [name] => Blah
                            [is_member] => 
                            [rank] => 3          <--
                            [description] => Blah blah blah
                            [rank_token] => medium
                        )
                    [73] => Array
                        (
                            [stamp_id] => 73
                            [name] => Blah
                            [is_member] => 
                            [rank] => 4          <--
                            [description] => Blah blah blah
                            [rank_token] => easy
                        )
                 )
          )
)
数组
(
[13] =>阵列
(
[名称]=>诸如此类
[说明]=>诸如此类
[父组id]=>8
[显示]=>诸如此类:诸如此类
[邮票]=>阵列
(
[80]=>阵列
(
[邮票编号]=>80
[名称]=>诸如此类
[is_成员]=>
[排名]=>1诸如此类诸如此类
[rank_token]=>中等
)
[73]=>阵列
(
[邮票编号]=>73
[名称]=>诸如此类
[is_成员]=>
[排名]=>2等等等等
[rank_token]=>简单
)
[80]=>阵列
(
[邮票编号]=>80
[名称]=>诸如此类
[is_成员]=>
[排名]=>3诸如此类诸如此类
[rank_token]=>中等
)
[73]=>阵列
(
[邮票编号]=>73
[名称]=>诸如此类
[is_成员]=>
[排名]=>4诸如此类诸如此类
[rank_token]=>简单
)
)
)
)

我的实际数组要大得多,但它仍然遵循此模式。

如果我正确理解了您的问题,这应该可以工作:

function cmp($a, $b)
{
    if ($a['rank'] == $b['rank']) {
        return 0;
    }
    return ($a['rank'] < $b['rank']) ? -1 : 1;
}
foreach($yourArray as &$entry) {
    uasort($entry['stamps'], "cmp");
}
unset($entry);

print_r($yourArray);
函数cmp($a,$b)
{
如果($a['rank']=$b['rank']){
返回0;
}
回报($a['rank']<$b['rank'])?-1:1;
}
foreach($yourrayas&$entry){
uasort($entry['stamps'],“cmp”);
}
未结算(分录);
打印(数组);
请注意,cmp功能与手册中的功能几乎相同。foreach中的符号表示创建的变量是数组成员的别名,而不是副本(PHP通常会这样做)。unset()之所以存在,是因为如果稍后尝试使用名为$entry的变量,实际上将操作数组中的最后一个条目

如果你对此感到不舒服,还有其他的方法来剥它的皮;例如,您可以创建第二个函数并将其映射到原始函数,因此:

function cmp($a, $b)
{
    if ($a['rank'] == $b['rank']) {
        return 0;
    }
    return ($a['rank'] < $b['rank']) ? -1 : 1;
}
function sort_entry($entry)
{
    uasort($entry['stamps'], "cmp");
    return $entry;
}
array_map('sort_entry', $yourArray);    
print_r($yourArray);
函数cmp($a,$b)
{
如果($a['rank']=$b['rank']){
返回0;
}
回报($a['rank']<$b['rank'])?-1:1;
}
函数排序\输入($entry)
{
uasort($entry['stamps'],“cmp”);
返回$entry;
}
数组映射('sort\u entry',$yourray);
打印(数组);

我想这会有帮助:你已经提到了usort,你试过什么了<代码>foreach($key=>$value数组)usort($array[$key]['stamps'],'yourusortfunction')没问题,祝你晚上愉快