我有以下数组:
$data=array(
'Points'=>$points,'Name'=>$row['Name'], 'Phone'=>$row['phone']
);
这位于我的Codeigniter控制器索引函数中的每个循环中:
public function index(){
$query=$this->My_model->get_data();
foreach ($query as $row)
{
$data=array(
'Points'=>$points,'Name'=>$row['Name'], 'Phone'=>$row['phone']
);
}
}
目前,如果我在$ data上打印__它会产生:
Array ( [Points] => 500 [Name] => Dave Laus )
Array ( [Points] => 1200 [Name] => John Smith )
Array ( [Points] => 700 [Name] => Jason Smithsonian )
但是我想对此进行排序/排序,以便具有最高点的用户首先显示如下:
Array ( [Points] => 1200 [Name] => John Smith )
Array ( [Points] => 700 [Name] => Jason Smithsonian )
Array ( [Points] => 500 [Name] => Dave Laus )
我想通过“Points”键对数组进行排序,以便首先显示具有最高点的用户。我想重新命令数组从最高点到最低点显示。
我尝试过usort和arsort以及ksort。我没有让它发挥作用。
我该怎么做?
我在我的控制器中尝试了这个,但它不起作用,而是错误:
public function index(){
$query=$this->My_model->get_data();
foreach ($query as $row)
{
$data=array(
array('Points'=>$points,'Name'=>$row['Name'], 'Phone'=>$row['phone']),
);
function cmp ($a, $b) {
return $a['Points'] < $b['Points'] ? 1 : -1;
}
usort($data, "cmp");
print_r($data);
//I also tried usort($leaders, array('home', 'cmp')); whcih gave no errors, but was the same result as before, not ordered
}
}
答案 0 :(得分:2)
试试这个:
function cmp ($a, $b) {
return $a['Points'] < $b['Points'] ? 1 : -1;
}
usort($data, "cmp");
答案 1 :(得分:0)
我建议你使用usort function。您必须创建一个回调函数来比较数组的2个元素。您可以在我提供的链接中通过排序过程使用此类回调函数的示例。
答案 2 :(得分:0)
以下函数将允许您使用特定字段以及方向(asc或desc)对给定数组进行排序。 它接受参数
// $field = field / key for sorting
// $array = array to sort
// $direction = ascending or descending sort direction (default is ascending)
function sortBy($field, &$array, $direction = 'asc')
{
usort($array, create_function( '$a, $b', '
$a = $a["' . $field . '"];
$b = $b["' . $field . '"];
if ($a == $b) {
return 0;
}
return ($a ' . ($direction == 'desc' ? '>' : '<') .' $b) ? -1 : 1;'));
return true;
}
现在使用以下代码对数组进行实际排序
sortBy('Points', $data, 'desc'); // sorts in descending order for value of key Points
sortBy('Name', $data, 'asc'); // sorts in ascending order for value of key Name
我建议你看一下以下链接 http://phpave.com/sorting-associative-array-specific-key/