我有类似的数组:
Array(
[06:30 PM] => 2
[03:00 AM] => 3
[08:00 PM] => 4
)
所以我使用uksort对键进行排序,数组的排序方式如下:
Array(
[03:00 AM] => 3
[06:30 PM] => 2
[08:00 PM] => 4
)
我使用的代码是:
uksort($arr, function($a, $b) {
return (strtotime(date('H:i',strtotime($a))) > strtotime(date('H:i',strtotime($b))));
});
这个数组在Key中有时间,值的数量为value。现在,我有另一个数组,其中包含上述键的值。
Array
(
[1] => Array
(
[0] => Default
[1] => BHU
)
[2] => Array
(
[0] => Default
[1] => HOT
[2] => COLD
)
[3] => Array
(
[0] => Default
[1] => Test
[2] => Test1
[3] => Test2
)
)
现在,我想按照上面排列的数组对这个数组进行排序。我怎么能这样做?
由于
答案 0 :(得分:1)
首先,您编写的代码可以简化为
uksort($arr, function($a, $b) {
return ( strtotime($a) > strtotime($b) );
});
对于答案,为数组结构制作代码会很麻烦。
我建议制作以下结构,然后使用您编写的代码进行排序,但我所显示的改进很少。
检查以下内容,
Array
(
[06:30 PM] => Array
(
[0] => Default
[1] => BHU
)
[03:00 AM] => Array
(
[0] => Default
[1] => HOT
[2] => COLD
)
[08:00 PM] => Array
(
[0] => Default
[1] => Test
[2] => Test1
[3] => Test2
)
)
答案 1 :(得分:1)
<?php
$arr = array(
'06:30 PM' => 2,
'03:00 AM' => 3,
'08:00 PM' => 4,
);
$arr2 = array(
'1' => array(
'0' => 'Default',
'1' => 'BHU'
),
'2' => array(
'0' => 'Default',
'1' => 'HOT',
'2' => 'COLD',
),
'3' => array(
'0' => 'Default',
'1' => 'Test',
'2' => 'Test1',
'3' => 'Test2',
),
);
$arr3 = array_combine(array_keys($arr), $arr2);
uksort($arr3, function($a, $b) {
return (strtotime(date('H:i',strtotime($a))) > strtotime(date('H:i',strtotime($b))));
});
echo"<pre>";
print_r($arr3);
?>
这个例子首先在你的第一个数组中使用array_keys,它将把你的键作为值,然后将它与你的另一个数组合并,你将在array_combine中使用array_combine它将获得第一个数组值作为键,第二个数组值为值和按键排序数组 有关详细信息,请参阅以下链接: