Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Perl_Sorting_Hash - Fatal编程技术网

在PHP中,如何通过一个键(可能是三级键)对多维哈希数组进行排序?

在PHP中,如何通过一个键(可能是三级键)对多维哈希数组进行排序?,php,arrays,perl,sorting,hash,Php,Arrays,Perl,Sorting,Hash,我正在从Perl转到PHP,并且正在努力了解PHP排序 以下是我在Perl中的内容: $log{'11111'}{'1'}{'20100102'}{'name'}='blah'; $log{'11111'}{'1'}{'20100101'}{'name'}='blah'; $log{'11111'}{'1'}{'20100103'}{'name'}='blah'; $cook='11111'; foreach $entry (sort {$log{$cook}{$a}{time} cmp $

我正在从Perl转到PHP,并且正在努力了解PHP排序

以下是我在Perl中的内容:

$log{'11111'}{'1'}{'20100102'}{'name'}='blah';
$log{'11111'}{'1'}{'20100101'}{'name'}='blah';
$log{'11111'}{'1'}{'20100103'}{'name'}='blah';

$cook='11111';

foreach $entry (sort {$log{$cook}{$a}{time} cmp $log{$cook}{$b}{time}} keys %{$log{$cook}}){
       ...
       }
基本上,我会在PHP中使用相同的数组结构,但希望像上面一样进行排序。

您需要该函数

您将为它提供一个比较回调函数,该函数将完成

{$log{$cook}{$a}{time} cmp $log{$cook}{$b}{time}}

哦,我的上帝。谁能读Perl呢?@Coronatus有好的Perl,也有坏的Perl,就像有好的PHP和坏的PHP一样。上面的代码片段味道很好,尽管如果不知道第二级键是否都是连续整数,很难说它确实不好。如果是的话,我们在这里遇到的就是无法理解问题的适当数据结构。当您按照数据结构中的字符串进行排序时,最好应用schwartzian变换将所需数据拉近表面。转换在Perl和PHPquestion中同样有价值:您想做什么?你是否打错了比较?你的例子$log{$cook}{$a}{time}没有意义-->您没有名为time的键。您的示例在$log{$cook}级别只有一个元素,并且有3个子元素。目前编写的排序没有意义。