PHP使用子数组值按字母顺序排序数组

use*_*er6 62 php arrays

可能重复:
如何在PHP中对数组和数据进行排序?
如何在
PHP中排序多维数组PHP排序数组按SubArray值PHP 按值
排序多维数组

我的数组看起来像:

Array(
    [0] => Array(
         [name] => Bill
         [age] => 15
    ),
    [1] => Array(
         [name] => Nina
         [age] => 21
    ),
    [2] => Array(
         [name] => Peter
         [age] => 17
    )
);
Run Code Online (Sandbox Code Playgroud)

我想根据他们的名字按字母顺序对它们进行排序.我看到PHP排序数组按SubArray值,但它没有多大帮助.任何想法如何做到这一点?

Mar*_*lea 139

这是你的答案,它100%有效,我已经测试过了.

<?php
$a = Array(
    1 => Array(
         'name' => 'Peter',
         'age' => 17
    ),
    0 => Array(
         'name' => 'Nina',
         'age' => 21
    ),
    2 => Array(
         'name' => 'Bill',
         'age' => 15
    ),
);
function compareByName($a, $b) {
  return strcmp($a["name"], $b["name"]);
}
usort($a, 'compareByName');
/* The next line is used for debugging, comment or delete it after testing */
print_r($a);
Run Code Online (Sandbox Code Playgroud)

  • 全部在一行:usort($ array,function($ a,$ b){return strcmp($ a ["name"],$ b ["name"]);}); (26认同)
  • 值得注意的是,strcmp具有案例敏感性.我花了一段时间才弄清楚为什么按字母顺序排序并没有给出预期的结果.我更改了上面的代码以返回以下内容:return strcmp(strtolower($ a ["name"]),strtolower($ b ["name"])); (11认同)
  • @Andrew,你也可以使用函数**strcasecmp**.它比较字符串不区分大小写.见http://php.net/manual/en/function.strcasecmp.php (10认同)
  • @pmrotule:仅适用于版本> PHP 5.3 (4认同)
  • 在您使用的方法范围内指定compare方法之前,这非常有效 (2认同)

ccK*_*Kep 15

usort 是你的朋友:

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

usort($array, "cmp");
Run Code Online (Sandbox Code Playgroud)