Acu*_*ubi 11 php sorting multidimensional-array
---数组$分----
Array
(
[0] => Array
(
[0] => 2011-10-02 05:30:00
[1] => 20
)
[1] => Array
(
[0] => 2011-10-04 09:30:00
[1] => 12
)
[2] => Array
(
[0] => 2011-10-01 13:30:00
[1] => 25
)
[3] => Array
(
[0] => 2011-10-03 02:30:00
[1] => 31
)
)
Run Code Online (Sandbox Code Playgroud)
我在上面有一个数组,想按时间对这个数组进行排序.然后我使用下面的代码进行排序,结果是正确的.但是,如果我将代码更改time[$key] = $val[0]为$time = $val[0],结果是错误的.
有没有人可以向我解释这个?非常感谢!
foreach($points as $key=>$val){
$time[$key] = $val[0];
array_multisort($time, SORT_ASC, $points);
}
Run Code Online (Sandbox Code Playgroud)
array_multisort一次排序多个数组.但是,它适用于列数组,因此foreach需要循环来获取时间列.构建此列表后,您可以执行多重排序.所述$points阵列是根据在索引排序$times,按照本例中的文档.
但是,您不需要在其中执行排序foreach,因为这意味着排序发生了4次(在您的示例中).它只需要发生一次:
foreach ($points as $key => $val) {
$time[$key] = $val[0];
}
array_multisort($time, SORT_ASC, $points);
Run Code Online (Sandbox Code Playgroud)
该函数uasort()采用一个比较回调函数。您可以使用它来比较两个时间戳。
$arr = array(
array('2011-10-02 05:30:00','20'),
array('2011-10-04 09:30:00','12'),
array('2011-10-01 13:30:00','25'),
array('2011-10-03 02:30:00','31')
);
function timecomp($a,$b)
{
// Subtracting the UNIX timestamps from each other.
// Returns a negative number if $b is a date before $a,
// otherwise positive.
return strtotime($b[0])-strtotime($a[0]);
}
uasort($arr,'timecomp');
print_r($arr);
Run Code Online (Sandbox Code Playgroud)
上面的代码会返回
(
[1] => Array
(
[0] => 2011-10-04 09:30:00
[1] => 12
)
[3] => Array
(
[0] => 2011-10-03 02:30:00
[1] => 31
)
[0] => Array
(
[0] => 2011-10-02 05:30:00
[1] => 20
)
[2] => Array
(
[0] => 2011-10-01 13:30:00
[1] => 25
)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14003 次 |
| 最近记录: |