我有一个像这样的多维数组:
Array
(
[thursday] => Array
(
[0] => Array
(
[title] => Movie2
[time] => 15.30
[venue] => VenueA
)
[1] => Array
(
[title] => Movie1
[time] => 13.00
[venue] => VenueB
)
)
)
我想使用array_multisort按时间排序,当我像这样使用它时,这很好:
foreach ($movies['thursday'] as $key => $row) {
$time[$key] = $row['time'];
}
array_multisort($time, SORT_ASC, $movies['thursday']);
unset($time);
但是这样,我必须为一周中的每一天重复这段代码。所以我想用:
foreach ($movies as $movie) {
foreach ($movie as $key => $row) {
$time[$key] = $row['time'];
}
array_multisort($time, SORT_ASC, $movie);
unset($time);
}
但是现在阵列仍未排序。据我所知,后一段代码功能与前一段代码相同。或者我犯了一个巨大的概念错误?
答案 0 :(得分:2)
您运行的是PHP4还是5?在4中,foreach循环不会像在5中那样创建引用。这可能是您的第二个代码示例无效的原因。如果是这种情况,您可以将其转换为for循环......
for ($i = 0; $i < count($movies); $i++) {
foreach ($movies[$i] as $key => $row) {
$time[$key] = $row['time'];
}
array_multisort($time, SORT_ASC, $movies[$i]);
unset($time);
}
答案 1 :(得分:1)
找到答案,使用while
可以解决问题。
while($elements = each($movies)) {
foreach($movies[$elements['key']] as $key => $row) {
$time[$key] = $row['time'];
}
array_multisort($time, SORT_ASC, $movies[$elements['key']]);
unset($time);
}
答案 2 :(得分:0)
我遇到了类似的问题。显然,某些旧版本的array_multisort无法正常使用混合值。我正在挖掘确切的错误和版本,但我发现它现在逃脱了我。如果我找到它,我会更新。