PHP 按元素大小/字符串大小对关联数组的数组进行排序


PHP sort array of associative arrays by element size / string size

有没有办法按其中一个元素的长度对关联数组数组进行排序? 我试图做的是按最大到最小的描述长度对数组进行排序。

$some_array = [];
$some_array[0] = ['name'=>'a name','description'=>'a description'];
$some_array[1] = ['name'=>'a name1','description'=>'a description 1'];
$some_array[2] = ['name'=>'a name2','description'=>'a description two for the third array element'];
$some_array[3] = ['name'=>'a name3','description'=>'a description three'];

在上面的例子中,$some_array[2]应该先是3然后是1然后是0

PHP>= 5.5.0 需要 array_column

array_multisort(array_map('strlen', array_column($some_array, 'description')),
                SORT_DESC,
                $some_array);

使用 usort 根据自定义参数对数组进行排序。

usort($array, function($a, $b) {
    return strlen($b['description']) - strlen($a['description']);
});
var_dump($array)