有没有办法按照其中一个元素的长度对关联数组进行排序?我想要做的是按最大到最小的描述长度对数组进行排序。
$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
。
答案 0 :(得分:2)
使用usort
根据自定义参数对数组进行排序。
usort($array, function($a, $b) {
return strlen($b['description']) - strlen($a['description']);
});
var_dump($array)
答案 1 :(得分:2)
array_column
需要PHP> = 5.5.0:
array_multisort(array_map('strlen', array_column($some_array, 'description')),
SORT_DESC,
$some_array);