【发布时间】:2015-08-16 14:49:57
【问题描述】:
我在使用 PHP usort() 函数时遇到问题。我目前有一个看起来像这样的多索引数组:
Array
(
[0] => Array
(
[0] => Array
(
[title] => c
[more_fields] => '...'
)
[1] => Array
(
[title] => a
[more_fields] => '...'
)
[2] => Array
(
[title] => b
[more_fields] => '...'
)
[3] => Array
(
[title] => xz
[more_fields] => '...'
)
)
)
我正在尝试遍历数组并按title 索引对每个索引进行排序。这是没有我的任何测试输入的代码:
foreach( $my_arr as $arr ) {
if( count( $arr ) > 1 ) {
usort( $arr, function( $a, $b ) {
return strcasecmp( $a['title'], $b['title'] );
} );
}
}
现在我希望它能够工作,并且我知道我正在访问正确的索引,如果我在返回之前回显 $a['title'] 和 $b['title'],我会得到如下所示的数据:
a _ c | xz _ a | b _ a | c _ a | b _ c | xz _ b | c _ b | xz _ c
这很好,很花哨,但是一旦foreach 完成,我的数组就不会改变。看起来,查看usort() 正在通过引用传递数组并在完成时返回布尔值的 PHP 文档。我在usort() 中遗漏了什么使我的数组保持不变?
【问题讨论】:
标签: php arrays sorting multidimensional-array usort