使用数组键按名称对数组进行排序

时间:2018-10-04 05:26:15

标签: php

我有一个这样的数组,如何按“名称”排序

Array ( 
    [0] => Array ( 
        [id] => 1 
        [name] => status_category_confide 
    ) 
    [1] => Array ( 
        [id] => 2 
        [name] => status_category_love 
    ) 
    [2] => Array ( 
        [id] => 3 
        [name] => status_category_household 
    ) 
    [3] => Array ( 
        [id] => 4 
        [name] => status_category_family 
    ) 
    [4] => Array (
        [id] => 5 
        [name] => status_category_friends 
    ) 
    [5] => Array ( 
        [id] => 6 
        [name] => status_category_colleague 
    ) 
    [6] => Array ( 
        [id] => 7 
        [name] => status_category_work 
    ) 
    [7] => Array ( 
        [id] => 8 
        [name] => status_category_ambition 
    ) 
)

我已经尝试过使用“排序”功能,但是它不起作用

$get_status_mood=mysqli_query($con, "select id, name from category");
while ($gsm=mysqli_fetch_array($get_status_mood)) {
    //array_push($status_category, constant($gsm['name']));
    $status_category[] = array(
        "id"=>$gsm['id'],
        "name"=>$gsm['name']
    );
}

sort($status_category);
for ($i=0; $i<count($status_category); $i++) {
    echo"<option value='".$status_category[$i]['id']."'>".$status_category[$i]['name']."</option>";
}

我想按名称顺序显示结果

4 个答案:

答案 0 :(得分:6)

按选项尝试SQL顺序

$get_status_mood=mysqli_query($con, "select id, name from category order by name asc");

答案 1 :(得分:1)

您可以使用array_columnarray_multisort函数对其进行排序。

$keys = array_column($array, 'name');

array_multisort($keys, SORT_ASC, $array);

答案 2 :(得分:0)

您可以尝试使用用户定义的比较函数对通过值排序的数组进行排序来进行尝试

   function cmp($a, $b)
{
  return strcmp($a["name"], $b["name"]);
}
usort($vc_array, "cmp");

答案 3 :(得分:0)

$a = array();
$a[] = array('id' => 1, 'name' => 'status_category_confide');
$a[] = array('id' => 2, 'name' => 'status_category_love');
$a[] = array('id' => 3, 'name' => 'status_category_household');

function cmp($x, $y) {
    if (strcmp($x['name'], $y['name']) == 0) {
        return 0;
    }
    return (strcmp($x['name'], $y['name']) < 0) ? -1 : 1;
}
usort($a, "cmp");

print_r($a);
相关问题