Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按值按字母顺序对多维数组排序,并将其存储在新变量中_Php_Arrays_Sorting_Multidimensional Array - Fatal编程技术网

Php 按值按字母顺序对多维数组排序,并将其存储在新变量中

Php 按值按字母顺序对多维数组排序,并将其存储在新变量中,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,我有以下数组,我想按值A到Z排序,并存储在一个新的arary$atoz_people: $people = ( [0] => Array ( [id] => 1 [name] => Ken ) [1] => Array ( [id] => 2 [name] => Anne ) [2] => Array ( [id] =>

我有以下数组,我想按值A到Z排序,并存储在一个新的arary
$atoz_people

$people = (
 [0] => Array
    (
        [id] => 1
        [name] => Ken
    )

 [1] => Array
    (
        [id] => 2
        [name] => Anne
    )

 [2] => Array
    (
        [id] => 3
        [name] => Bob
    )

);
$atoz_people = $people;
asort($atoz_people);
print_r($atoz_people);
我使用了“经典”
asort($people)

不幸的是,它不起作用。为了获得下面的阵列,我应该更改什么?有可能吗

$atoz_people = (
    [1] => Array
    (
        [id] => 2
        [name] => Anne
    )
    [2] => Array
    (
        [id] => 3
        [name] => Bob
    )
    [0] => Array
    (
        [id] => 1
        [name] => Ken
    )    

);

对于多维,您可以使用
usort
uasort

uasort($people,"sort_name");
var_dump($people);
function sort_name($a,$b)
{
  return $a["name"] > $b["name"];
}
检查

1)将初始数组存储在新变量中:

$atoz_people = $people;
2) 创建排序功能:

function sort_by_name($a,$b)
{
    return $a["name"] > $b["name"];
}
3) 排序数组

uasort($atoz_people,"sort_by_name");
print_r_html($atoz_people);

@德赛:非常感谢

可能的重复首先你必须定义问题。你怎么知道“它不起作用”?预期产量是多少?为什么这是预期的输出而不是现在的输出?它不起作用,因为它是一个多维数组。asort用于普通阵列。您需要usort。的文档中描述了您的确切问题的解决方案。我将回到创建此数组的代码。我猜它从数据库中获取数据。处理该代码并使其返回一个将ID与名称关联的一级数组。然后,排序变得很简单(并且
asort()
按预期工作)。