php的排序函数
<pre><code>sort(array,sortingtype);</code></pre>
<table>
<thead>
<tr>
<th>参数</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>array</td>
<td>必需。规定要进行排序的数组。</td>
</tr>
<tr>
<td>sortingtype</td>
<td>可选。规定如何比较数组的元素/项目。可能的值:</td>
</tr>
</tbody>
</table>
<pre><code>0 = SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)
1 = SORT_NUMERIC - 把每一项作为数字来处理。
2 = SORT_STRING - 把每一项作为字符串来处理。
3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。
</code></pre>
<h6 id="定义和用法">定义和用法</h6>
<h6 id="sort-函数对索引数组进行升序排序">sort() 函数对索引数组进行升序排序。</h6>
<h6 id="rsort-函数对索引数组进行降序排序其他用法一样">rsort() 函数对索引数组进行降序排序,其他用法一样。</h6>
<h6 id="注释本函数为数组中的单元赋予新的键名原有的键名将被删除">注释:本函数为数组中的单元赋予新的键名。原有的键名将被删除。</h6>
<h6 id="如果成功则返回-true否则返回-false">如果成功则返回 TRUE,否则返回 FALSE。</h6>
<h6 id="提示请使用-rsort-函数对索引数组进行降序排序">提示:请使用 rsort() 函数对索引数组进行降序排序。</h6>
<table>
<thead>
<tr>
<th>返回值</th>
<th>若成功则返回 TRUE,若失败则返回 FALSE。</th>
</tr>
</thead>
</table>
<ul>
<li>sort() 函数用于对数组单元从低到高进行排序。<br></li>
<li> rsort() 函数用于对数组单元从高到低进行排序。<br></li>
<li> asort() 函数用于对数组单元从低到高进行排序并保持索引关系。<br></li>
</ul>
<blockquote>
<pre><code> PHP asort() 函数用于对数组单元从低到高进行排序并保持索引关系,如果成功则返回 TRUE,失败则返回 FALSE。
</code></pre>
</blockquote>
<ul>
<li> arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。</li>
</ul>
<blockquote>
<pre><code> PHP arsort() 函数行为与 asort() 相反,对数组单元进行由高到低排序并保持索引关系,请参考 asort() 函数使用。
</code></pre>
</blockquote>
<ul>
<li> ksort() 函数用于对数组单元按照键名从低到高进行排序。</li>
</ul>
<blockquote>
<pre><code>PHP ksort() 函数用于对数组单元按照键名从低到高进行排序,如果成功则返回 TRUE,失败则返回 FALSE。本函数会保留原来的键名,因此常用于关联数组。
</code></pre>
</blockquote>
<ul>
<li> krsort() 函数用于对数组单元按照键名从高到低进行排序。</li>
</ul>
<blockquote>
<pre><code>PHP krsort() 函数行为与 ksort() 相反,对数组单元按照键名进行由高到低排序,请参考 ksort() 函数使用。
</code></pre>
</blockquote>
<pre><code>usort(array,myfunction);
</code></pre>
<h5 id="使用用户自定义的比较函数对数组-a-中的元素进行排序">使用用户自定义的比较函数对数组 $a 中的元素进行排序:</h5>
<pre><code><?php
function my_sort($a,$b)
{
if ($a==$b) return 0;
return ($a<$b)?-1:1;
}
$a=array(4,2,8,6);
usort($a,"my_sort");
$arrlength=count($a);
for($x=0;$x<$arrlength;$x++)
{
echo $a[$x];
echo "<br>";
}
?>
</code></pre>
<pre><code>1、使用array_multisort
使用这个方法,会比较麻烦些,要将age提取出来存储到一维数组里,然后按照age升序排列。具体代码如下:
代码如下:
<?php
$ages = array();
foreach ($users as $user) {
$ages[] = $user['age'];
}
array_multisort($ages, SORT_ASC, $users);
执行后,$users就是排序好的数组了,可以打印出来看看。如果需要先按年龄升序排列,再按照名称升序排列,方法同上,就是多提取一个名称数组出来,最后的排序方法这样调用:
代码如下:
array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);
2、使用usort
使用这个方法最大的好处就是可以自定义一些比较复杂的排序方法。例如按照名称的长度降序排列:
代码如下:
<?php
usort($users, function($a, $b) {
$al = strlen($a['name']);
$bl = strlen($b['name']);
if ($al == $bl)
return 0;
return ($al > $bl) ? -1 : 1;
});
这里使用了匿名函数,如果有需要也可以单独提取出来。其中$a, $b可以理解为$users数组下的元素,可以直接索引name值,并计算长度,而后比较长度就可以了。
</code></pre><br><br>
来源:https://www.cnblogs.com/niuben/p/11192709.html
頁:
[1]