【发布时间】:2014-06-17 21:06:22
【问题描述】:
我有以下数组:
$data=array(
'Points'=>$points,'Name'=>$row['Name'], 'Phone'=>$row['phone']
);
这位于我的 Codeigniter 控制器索引函数中的 for each 循环中:
public function index(){
$query=$this->My_model->get_data();
foreach ($query as $row)
{
$data=array(
'Points'=>$points,'Name'=>$row['Name'], 'Phone'=>$row['phone']
);
}
}
目前如果我在 $data 上 print_r 会产生:
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
}
}
【问题讨论】:
-
应该是 $data[]= array... 对吧?否则你每次都重写同一个数组
-
如果您提供更好的数据示例会更有帮助。您说您想按
Points键排序,但您向我们展示了一个一维数组 - 只有一个Points键。向我们展示排序前的数据示例,以及您希望它的外观。 -
@MarkM 请查看编辑
-
应该还显示你尝试过的usort/ksort的代码。
标签: php arrays codeigniter foreach associative-array