[英]order by key array multidimensional
I have this multidimensional array, and i want to order each array by 'fecha'(i mean 2017-02-20, then 2017-02-21, then 2017-02-22 and finally 2017-02-23). 我有这个多维数组,我想用'fecha'命令每个数组(我的意思是2017-02-20,然后是2017-02-21,然后是2017-02-22,最后是2017-02-23)。 I have read a lot of answers, but they only work with bidimensional arrays. 我已经阅读了很多答案,但它们只适用于二维数组。 I have tried with unsort and array_multisort, even with ksort bue i couldn´t obtain the desire result. 我尝试过unsort和array_multisort,即使使用ksort bue我也无法获得所需的结果。
Array
(
[0.10] => Array
(
[0] => Array
(
[fecha] => 2017-02-21
[tarifa] => 743.80
[percent] => 0.10
)
[1] => Array
(
[fecha] => 2017-02-22
[tarifa] => 743.80
[percent] => 0.10
)
[2] => Array
(
[fecha] => 2017-02-20
[tarifa] => 743.80
[percent] => 0
)
[3] => Array
(
[fecha] => 2017-02-23
[tarifa] => 743.80
[percent] => 0
)
)
[0.15] => Array
(
[0] => Array
(
[fecha] => 2017-02-21
[tarifa] => 743.80
[percent] => 0.15
)
[1] => Array
(
[fecha] => 2017-02-22
[tarifa] => 743.80
[percent] => 0.15
)
[2] => Array
(
[fecha] => 2017-02-20
[tarifa] => 743.80
[percent] => 0
)
[3] => Array
(
[fecha] => 2017-02-23
[tarifa] => 743.80
[percent] => 0
)
)
)
you can use usort
with strtotime
to order by date. 您可以使用usort
用strtotime
按日期排序。
ASC Order by date (fecha): ASC按日期排序(fecha):
foreach ($yourArray as $key => $subarray) {
usort($subarray, function($a, $b) {
return strtotime($a['fecha']) - strtotime($b['fecha']);
});
$yourArray[$key] = $subarray;
}
print_r($yourArray);
DESC order by date (fecha): DESC按日期排序(fecha):
foreach ($yourArray as $key => $subarray) {
usort($subarray, function($a, $b) {
return strtotime($b['fecha']) - strtotime($a['fecha']);
});
$yourArray[$key] = $subarray;
}
print_r($yourArray);
Try: 尝试:
foreach ($yourArray as $key => &$subarray) {
usort($subarray, function($a, $b) {
return $a['fecha'] <= $b['fecha'];
});
}
print_r($yourArray); //now it's sorted
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.