标签:排序 数组 fruit key Array PHP data
前言
无论是在工作中还是在学习中,我们经常要对数组进行各种操作,包括但不限于数组的 过滤,去重,合并,排序。
在我看来,在PHP中,我们用地最频繁的应该是数组了,数组的强大我就不多赘述了。
排序
PHP对数组进行排序 的函数对比
实例#1 sort()
对数组排序
$data = [1,3,2,5,4]; sort($data); // [1,2,3,4,5]
实例#2 rsort()
对数组逆向排序
$data = [1,3,2,5,4]; rsort($data); // [5,4,3,2,1]
实例#3 asort()
对数组进行排序并保持索引关系
(这里以索引数组举例,关联数组同理)
$data = [1,3,2,5,4]; asort($data); print_r($data); // output: Array ( [0] => 1 [2] => 2 [1] => 3 [4] => 4 [3] => 5 )
实例#4 arsort()
对数组进行逆向排序并保持索引关系。
(这里以索引数组举例,关联数组同理)
$data = [1,3,2,5,4]; arsort($data); print_r($data); // ourput: Array ( [3] => 5 [4] => 4 [1] => 3 [2] => 2 [0] => 1 )
实例#5 ksort()
对数组按照键名排序,主要用于关联数组。
$data = ['a'=>1, 'c'=>3, 'b'=>2]; ksort($data); print_r($data); // output: Array ( [a] => 1 [b] => 2 [c] => 3 )
实例#6 krsort()
对数组按照键名逆向排序
$data = ['a'=>1, 'c'=>3, 'b'=>2]; krsort($data); print_r($data); // output: Array ( [c] => 3 [b] => 2 [a] => 1 )
实例#7 usort()
使用用户自定义的比较函数对数组的值排序
$data = [1,3,2]; usort($data, function($a, $b){ return $a <=> $b; }); print_r($data); // output: Array ( [0] => 1 [1] => 2 [2] => 3 )
$data = [ [ 'fruit' => 'lemon' ], [ 'fruit' => 'apple' ], [ 'fruit' => 'banana' ], ]; usort($data, function($a, $b){ return strcmp($a['fruit'], $b['fruit']); }); print_r($data); Array ( [0] => Array ( [fruit] => apple ) [1] => Array ( [fruit] => banana ) [2] => Array ( [fruit] => lemon ) )
实例#8 uasort()
使用用户自定义的比较函数对数组的值进行排序并保持索引关系
$fruits = [ [ 'fruit' => 'lemons' ], [ 'fruit' => 'apples' ], [ 'fruit' => 'bananas' ], ]; uasort($fruits, function($a, $b){ return strcmp($a['fruit'], $b['fruit']); }); print_r($fruits); // output: Array ( [1] => Array ( [fruit] => apples ) [2] => Array ( [fruit] => bananas ) [0] => Array ( [fruit] => lemons ) )
实例#9 usort() 使用闭包对多维数组排序
$array = [ ['key_a' => 'z', 'key_b' => 'c'], ['key_a' => 'x', 'key_b' => 'b'], ['key_a' => 'y', 'key_b' => 'a'], ]; function build_sorter($key) { return function($a, $b) use ($key) { return strnatcmp($a[$key], $b[$key]); }; } usort($array, build_sorter('key_a')); print_r($array); // output: Array ( [0] => Array ( [key_a] => x [key_b] => b ) [1] => Array ( [key_a] => y [key_b] => a ) [2] => Array ( [key_a] => z [key_b] => c ) )
实例#10 shuffle()
打乱数组。该函数打乱(随机排列单元的顺序)一个数组。 它使用的是伪随机数产生器,并不适合密码学的场合。
$numbers = range(1, 5); shuffle($numbers); print_r($numbers); // output Array ( [0] => 5 [1] => 3 [2] => 2 [3] => 1 [4] => 4 )
实例#11 shuffle() 打乱数组并保持索引关系
function shuffle_assoc(&$array) { $keys = array_keys($array); shuffle($keys); $new = []; foreach ( $keys as $key ) { $new[$key] = $array[$key]; } $array = $new; return true; } $numbers = range(1, 5); shuffle_assoc($numbers); print_r($numbers); // output: Array ( [2] => 3 [3] => 4 [0] => 1 [4] => 5 [1] => 2 )
参考
标签:排序,数组,fruit,key,Array,PHP,data 来源: https://www.cnblogs.com/wgxi/p/14608609.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。