2016-09-15 13 views
0

我想做一个非常酷的超级排序函数,但用户排序功能在内部作为函数创建时不起作用。这个想法是命名数组和键,然后根据我的选择返回排序后的数组。在php中的自定义函数中的usort

function super_sort($key,$arr){ 
    usort($arr, function($a, $b){ 
     return strcmp($a[$key], $b[$key]); 
    }); 
    print_sorted($key,$arr); 
} 

我会这样称呼它

super_sort('name',$people); 

也是我应该添加print_sorted功能是本

function print_sorted($key,$arr){ 
    echo '<h1>'.$key.'</h1>'; 
    foreach($arr as $k => $v){ 
    echo '<strong>name:</strong> '.$v['name'].'<strong> age:</strong> '.$v['age'].'<strong> social:</strong> '.$v['social'].'<strong> index:</strong> '.$v['index'].'<br/>'; 
    } 
} 
+1

使用'的usort匿名函数内部use'导入'$ key',请参见下面 – Ghost

回答

2

$key在匿名函数的情况下不存在,因此通过它使用use

usort($arr, function($a, $b) use ($key) { 
    return strcmp($a[$key], $b[$key]); 
}); 

http://php.net/manual/en/functions.anonymous.php

+0

答案哈哈,是完美。你是个天才。只要网站允许,我会尽快检查您的答案。在旁注中,也许你可以回答这个问题。有没有一种简单的方法可以让使用者向后退货? –

+1

@ThomasValadez,您可以使用!strcmp($ a [$ key],$ b [$ key])使订单向后。 –

+0

男人,你们这个网站上的老板 –