ホームページ  >  記事  >  バックエンド開発  >  PHPのソート機能を詳しく解説(例付き)

PHPのソート機能を詳しく解説(例付き)

王林
王林オリジナル
2019-08-31 14:36:205099ブラウズ

PHPのソート機能を詳しく解説(例付き)

ソートにはさまざまな方法があります。通常、よく使用する配列ソート関数は、sort()、rsort()、asort() です。 、arsort()、ksort()、krsort()。以下は皆さんに向けて詳しくご紹介します。

sort(array,sortingtype);

PHPのソート機能を詳しく解説(例付き)

0 = SORT_REGULAR - デフォルト。各項目を規則的な順序で配置します (標準 ASCII、タイプの変更なし)

1 = SORT_NUMERIC - 各項目を数値として扱います。

2 = SORT_STRING - 各項目を文字列として扱います。

3 = SORT_LOCALE_STRING - 現在のロケール (setlocale() で変更可能) に基づいて、各項目を文字列として扱います。

4 = SORT_NATURAL - natsort() のような自然な並べ替えを使用して、各項目を文字列として扱います。

5 = SORT_FLAG_CASE - 文字列は、SORT_STRING または SORT_NATURAL と組み合わせて (ビット単位の OR)、大文字と小文字を区別せずに並べ替えることができます。

定義と使用法:

sort() 関数は、インデックス配列を昇順に並べ替えます。

rsort() 関数はインデックス配列を降順にソートします。その他の使用法は同じです。

注: この関数は、配列内のユニットに新しいキー名を割り当てます。元のキー名は削除されます。

成功した場合は TRUE を返し、それ以外の場合は FALSE を返します。

ヒント: rsort() 関数を使用してインデックス配列を降順に並べ替えてください。

sort() 関数は、配列セルを下位から上位に並べ替えるのに使用されます。

rsort() 関数は、配列セルを上位から下位に並べ替えるのに使用されます。

asort() 関数は、配列セルを下位から上位に並べ替え、インデックス関係を維持するために使用されます。

PHP の asort() 関数は、配列セルを下位から上位に並べ替え、インデックス関係を維持するために使用されます。成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

arsort() 関数は、配列セルを上位から下位に並べ替え、インデックス関係を維持するために使用されます。

PHP arsort() 関数は、asort() とは逆の動作をします。配列セルを上位から下位に並べ替え、インデックス関係を維持します。asort() 関数の使用法を参照してください。

ksort() 関数は、配列セルをキー名で下位から上位に並べ替えるのに使用されます。

PHP ksort() 関数は、配列セルをキー名で下位から上位に並べ替えるのに使用され、成功した場合は TRUE を返し、失敗した場合は FALSE を返します。この関数は元のキー名を保持するため、連想配列でよく使用されます。

krsort() 函数用于对数组单元按照键名从高到低进行排序。

PHP krsort() 函数行为与 ksort() 相反,对数组单元按照键名进行由高到低排序,请参考 ksort() 函数使用。

使用用户自定义的比较函数对数组 $a 中的元素进行排序:

usort(array,myfunction);
<?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>";
   }?>
1、使用array_multisort

使用这个方法,会比较麻烦些,要将age提取出来存储到一维数组里,然后按照age升序排列。具体代码如下:

代码如下:<?php
$ages = array();
foreach ($users as $user) {
  $ages[] = $user[&#39;age&#39;];
}
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[&#39;name&#39;]);
      $bl = strlen($b[&#39;name&#39;]);
      if ($al == $bl) 
          return 0;      
          return ($al > $bl) ? -1 : 1;
    });

这里使用了匿名函数,如果有需要也可以单独提取出来。其中$a, $b可以理解为$users数组下的元素,可以直接索引name值,
并计算长度,而后比较长度就可以了。

以上是工作中常用的数组排序方法,想了解更多相关问题请访问PHP中文网:PHP视频教程

以上がPHPのソート機能を詳しく解説(例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。