无法按属性名称对对象数组进行排序

我有这个数组:


$array = array(

    ['name' => 'Indor Swimming Pool'],

    ['name' => 'abracadabra'],

);

我想按字母顺序排序,所以我做了:


usort($array, function($a, $b)

{

    return strcmp($a['name'], $b['name']);

});

但是当我转储它时:


var_dump($array);

我得到:


array(2) {

  [0]=>

  array(1) {

    ["name"]=>

    string(19) "Indor Swimming Pool"

  }

  [1]=>

  array(1) {

    ["name"]=>

    string(11) "abracadabra"

  }

}

这是不正确的,abracadabra应该先


鸿蒙传说
浏览 103回答 2
2回答

海绵宝宝撒

根据 ASCII 表 chr I在前,然后是a chrASCII 表所以在这里你的数组实际上是按字母顺序排序以获得所需的结果你需要按降序对数组进行排序<?php$data = array(    ['name' => 'Indor Swimming Pool'],    ['name' => 'abracadabra'],);arsort($data);?>输出Array(    [1] => Array        (            [name] => abracadabra        )    [0] => Array        (            [name] => Indor Swimming Pool        ))

慕森卡

它按预期工作。这个顺序的原因是'a'实际上在ASCII中的'I'之后。
打开App,查看更多内容
随时随地看视频慕课网APP