Php 使用匿名函数进行字母排序的比较器函数
我有一个二维数组,想按名称排序。我想使用匿名函数。当我想按字母顺序排序时,我的比较器函数应该是什么样子Php 使用匿名函数进行字母排序的比较器函数,php,syntax-error,anonymous-function,sorting,Php,Syntax Error,Anonymous Function,Sorting,我有一个二维数组,想按名称排序。我想使用匿名函数。当我想按字母顺序排序时,我的比较器函数应该是什么样子 [names] => Array ( [0] => Array ( [name] => Baba [prename] => Ali ) [1] => Array ( [name] => Pan [p
[names] => Array
(
[0] => Array
(
[name] => Baba
[prename] => Ali
)
[1] => Array
(
[name] => Pan
[prename] => Peter
)
)
为了分类,我尝试了以下方法:
usort($names, function cmp($a, $b) {
return strcmp($a['name'], $b['name']);
});
这给了我一个意外的T_字符串,第一行应该是“(”。您可以使用
usort
$names = Array(
"0" => Array("name" => "B","prename" => "A"),
"1" => Array("name" => "D","prename" => "B"),
"2" => Array("name" => "A","prename" => "C"),
"3" => Array("name" => "B","prename" => "D")
);
例1
__xsort($names,"name");
var_dump($names);
输出
array
0 =>
array
'name' => string 'A' (length=1)
'prename' => string 'C' (length=1)
1 =>
array
'name' => string 'B' (length=1)
'prename' => string 'A' (length=1)
2 =>
array
'name' => string 'B' (length=1)
'prename' => string 'D' (length=1)
3 =>
array
'name' => string 'D' (length=1)
'prename' => string 'B' (length=1)
array
0 =>
array
'name' => string 'B' (length=1)
'prename' => string 'A' (length=1)
1 =>
array
'name' => string 'D' (length=1)
'prename' => string 'B' (length=1)
2 =>
array
'name' => string 'A' (length=1)
'prename' => string 'C' (length=1)
3 =>
array
'name' => string 'B' (length=1)
'prename' => string 'D' (length=1))
例2
__xsort($names,"prename");
var_dump($names);
输出
array
0 =>
array
'name' => string 'A' (length=1)
'prename' => string 'C' (length=1)
1 =>
array
'name' => string 'B' (length=1)
'prename' => string 'A' (length=1)
2 =>
array
'name' => string 'B' (length=1)
'prename' => string 'D' (length=1)
3 =>
array
'name' => string 'D' (length=1)
'prename' => string 'B' (length=1)
array
0 =>
array
'name' => string 'B' (length=1)
'prename' => string 'A' (length=1)
1 =>
array
'name' => string 'D' (length=1)
'prename' => string 'B' (length=1)
2 =>
array
'name' => string 'A' (length=1)
'prename' => string 'C' (length=1)
3 =>
array
'name' => string 'B' (length=1)
'prename' => string 'D' (length=1))
使用的功能
function __xsort(&$names,$key) {
usort($names, function ($a, $b) use($key) {
if ($a[$key] == $b[$key]) {
return 0;
}
return ($a[$key] < $b[$key]) ? - 1 : 1;
});
return $names;
}
function_uxsort(&$names,$key){
usort($name,function($a,$b)use($key){
如果($a[$key]==b[$key]){
返回0;
}
返回($a[$key]<$b[$key])?-1:1;
});
返回$names;
}
错误并不那么明显,但再次思考匿名函数的概念,我得到了提示。函数名不可能存在。解决我的确切问题的正确方法是
usort($names, function ($a, $b) {
return strcmp($a['name'], $b['name']);
});
请看一下
usort()
。错误说明了错误所在。即,它没有说谎。提示:)嗯,不是很匿名,是吗:。。谢谢。+1这个通用数组排序函数,谢谢。php有。@hakre你不能用array\u multisort
中的键排序你也一直在找你能帮我找一下吗。。。我想你很了解PHP的内部结构better@Baba:当然你可以用钥匙分类,但是你更缺少我感觉到的。另请参见:@Baba:获取要排序的列的数组,然后使用multisort
。完成。这就是array_column如何对多维数组进行排序。