我正在尝试在foreach循环中创建一个数组,然后按键对其进行排序。在Foreach循环中动态创建数组
的每个循环创建阵列看起来像这样:
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);
}
}
但这只有数组中返回第一个中的第一项。
但是,当我直接输入一些数组项,如下所示,它工作正常,并排序所有的数组项。
public function index(){
$query=$this->My_model->get_data();
foreach ($query as $row)
{
$data = array (
Array ('Points' => 500, 'Name' => 'James Lion') ,
Array ('Points' => 1200, 'Name' => 'John Smith'),
Array ('Points' => 700, 'Name' => 'Jason Smithsonian'));
function cmp ($a, $b) {
return $a['Points'] < $b['Points'] ? 1 : -1;
}
usort($data, "cmp");
print_r($data);
}
}
如何解决这个问题,这样在第一个片段的代码,使作品,因为它在第二个片段呢?
你试过在foreach操作后使用自定义排序吗? (意思是在foreach之后) – user1978142
@kevinabelita我已经尝试过,但它只是返回最后一个项目。上面的第二个代码片段工作正常,数组和排序代码处于该位置,但是当我尝试使用动态代码int创建数组时,第一个代码片段不起作用,所以我认为这是我的方式在第一个代码片段的循环中构建数组。 – Tester