ホームページ バックエンド開発 PHPチュートリアル PHP配列ソートの各種方法まとめ_PHPチュートリアル

PHP配列ソートの各種方法まとめ_PHPチュートリアル

Jul 13, 2016 pm 04:56 PM
php する 存在する 要約する 私たち 選別 配列 方法 単純

PHP では、1 次元配列をソートするのは非常に簡単です。多次元データをソートしたい場合は、sort() と rsort() を使用するだけで済みます。関数なので、自分で行う必要があります。

php 配列のソート については、php で提供されている関数が多数あります。ない場合は追加できます。

sort() 関数は、配列セルを下位から上位にソートするために使用されます。

rsort() 関数は、配列セルを上位から下位にソートするために使用されます。
asort() 関数は、配列セルを下位から上位に並べ替え、インデックス関係を維持するために使用されます。
arsort() 関数は、配列セルを上位から下位に並べ替え、インデックス関係を維持するために使用されます。
ksort() 関数は、配列セルをキー名で下位から上位にソートするために使用されます。
krsort() 関数は、キー名によって配列セルを上位から下位にソートするために使用されます。

しかし、今日は主に PHP に付属する配列ソート関数について話します。主にカスタムソートについて話します。

1.バブル選別方法

説明: 最大の数を見つけて最後まで並べて探し続けます

例:

コードは次のとおりです$arr = 配列(3,5,-1,0,2); for($i=0;$i for($j=0;$j If($arr[$j]>$arr[$j+1]){
$temp = $arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}
}
}


理解:
コードをコピー
3、5、-1、0、2

//最初の数値から逆に比較し、次の数値より大きい場合は、次の数値で位置を調整します
//最初は 3 が 5 未満で、その後は変更されません
// 2 回目は、5 が -1 より大きいため、
になります。 3、-1、5、0、2
// 3 回目は、5 が 0 より大きいです
3、-1、0、5、2
// 4 回目、5 は 2 より大きいです
3、-1、0、2、5
これで内側のループが完了します。この時点で最後の番号はソートされ、次回は参加しません。 3、-1、0、2、5 2 番目の外側ループが始まります。 1 回目: 3 は -1 より大きいです
。 -1、3、0、2、5
2 回目: 3 は 0 より大きいです
-1、0、3、2、5
3 回目: 3 は 2 より大きいです
-1、0、2、3、5
これで次の 2 桁の並べ替えが完了します。以下同様です
-1、0、2、3、5
2. 選択ソート方法 説明: 最初の数値が最小の数値であると仮定し、次の数値をそれと順番に比較し、仮定した数値が最小の数値でない場合は、その位置を次の最小の数値と入れ替えます


コードは次のとおりですコードをコピー$arr=配列(2,1,-1,3,0); for($i=0;$i $minval = $arr[$i]; PHP では、1 次元配列を並べ替えるには、sort() と rsort() を使用するだけで十分です。多次元データを並べ替えたい場合、PHP にはそのような関数がありません。だから私は...
$minindex = $i;
for($j=1+$i;$j If($arr[$j] $minval = $arr[$j];
$minindex = $j;
}
}
$temp = $arr[$i];
$arr[$i] = $arr[$minindex];
$arr[$minindex] = $temp;
}



理解:
2、1、-1、3、0
//最初の数値 2 が最小値であると仮定し、最小数値を見つけるために後続の数値を 2 と比較します
プロセス:
1 が 2 より小さい場合、minval=1
-1 が 1 より小さい場合、minval=-1
3 は -1 より大きく、変化しません
0 は -1 より大きく、変化しません
これで、配列内の最小の数値、-1 が見つかりました
-1 と 2 の位置を入れ替えて、最初の数字の並べ替えを完了します
したがって、配列は
になります -1、1、2、3、0
最初の番号 -1 はすでに順序になっているため、比較には参加せず、後ろに進みます
ここで minval=1 と仮定します
2 は 1 より大きく、変化しません
3 は 1 より大きく、変化しません
0 が 1 より小さい場合、minval=0 になります
1サイクルが完了したので、0と1の位置を入れ替えて2番目の数字の並べ替えを完了します
したがって、配列は
になります -1、0、2、3、1
//以下のプッシュメソッドは上記と同じです。 。 。

3. 挿入ソート方法の説明: まず、配列内の最初の数値が別個の順序配列であると仮定し、次に次の数値をそれと比較します [ここで、私が成長するにつれて、それはそれらになります]。次の数値が以下の場合想定される数字を計算し、小さい方の数字を後ろに移動し、最後にその数字を前に移動します

コードは次のとおりです コードをコピー
$arr=配列(2,1,-1,3,0);
for($i=1;$i $insertval=$arr[$i];
$insertindex = $i-1;
While($insertindex>=0 && $insertval $arr[$insertindex+1]=$arr[$insertindex];
$insertindex--;
}
$temp = $arr[$i];
$arr[$insertindex+1]=$insertval;
}

理解:
2、1、-1、3、0
//初めて、挿入する数値 1 を insertval として保存し、insertval と 2 を比較します。 1 は 2 より小さいので、2 を後ろに移動して次の図になります
2、2、-1、3、0
//この時点では、2の前に数字はなく、insertindex=0なので比較が完了し、見つかった位置にinsertvalを挿入します。以下のようになります
1、2、-1、3、0
//このとき、1と2は順序付き配列になります
//2回目は、まず挿入する数値-1をinsertvalとして保存し、次にinsertvalを2と比較します。-1は2より小さいので、2を後ろに移動して次の図になります
1、2、2、3、0
//このとき、insertvalと1を比較し、-1が1未満の場合は-1を戻して以下の図になります(挿入する数値と前の順序付けされた配列を比較する処理です)
1、1、2、3、0
//この時点で、insertindexが終わっているので、この位置にinsertvalを挿入します
-1、1、2、3、0
//以下のメソッドは上記の通りです


2 次元配列ソート関数は、配列がデータベースから取得されない場合に、MySQL と同様の ORDER BY 効果を実現できます。

http://www.bkjia.com/PHPjc/631627.html
コードは次のとおりです コードをコピー

// 説明: PHPにおける2次元配列のソート方法


/**
 * @package バグフリー
 * @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
 *
 *
 * 2 次元配列をレベル 2 の項目ごとにソートするには、array_multisort() 関数を使用します。
 *
 * sysSortArray($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2"……)
 * @author 王春生
 * @param 配列 $ArrayData 並べ替える配列。
 * @param 文字列 $KeyName1 並べ替えの基準となる最初の項目。
 * @param 文字列 $SortOrder1 並べ替え順序 ("SORT_ASC"|"SORT_DESC")
 * @param string $SortType1 並べ替えタイプ("SORT_REGULAR"|"SORT_NUMERIC"|"SORT_STRING")
 * @return 配列 ソートされた配列。
 */
関数 sysSortArray($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR")
{
    if(!is_array($ArrayData))
    {
        $ArrayData を返します。
    }
 
    // 引数の数値を取得します。
    $ArgCount = func_num_args();
 
    // ソートの基準となるキーを取得し、SortRule 配列に置きます。
    for($I = 1;$I <$ArgCount;$I ++)
    {
        $Arg = func_get_arg($I);
        if(!エレギ("SORT",$Arg))
        {
            $KeyNameList[] = $Arg;
            $SortRule[] = '$'.$Arg;
        }
        それ以外
        {
            $SortRule[] = $Arg;
        }
    }
 
    // キーに従って値を取得し、配列に代入します。
    foreach($ArrayData AS $Key => $Info)
    {
        foreach($KeyNameList AS $KeyName)
        {
            ${$KeyName}[$Key] = $Info[$KeyName];
        }
    }
 
    // eval 文字列を作成し、それを評価します。
    $EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);';
    eval ($EvalString);
    $ArrayData を返します。
}
 
//################# 例 #################
$arr = 配列(
    配列(
        「名前」 =>   「学习」、
        'サイズ' =>   「1235」、
        「タイプ」 =>   「jpe」、
        「時間」 =>   「1921-11-13」、
        'クラス' =>   'dd'、
    )、
    配列(
        「名前」 =>   「中国功夫」、
        「サイズ」 =>   「153」、
        「タイプ」 =>   「jpe」、
        「時間」 =>   '2005-11-13'、
        'クラス' =>   「じー」、
    )、
    配列(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  )、
配列(
'名前' => '中国カンフー'、
                                                                                                                                                                                                                                                                                                                                                    '時間' => '1925-02-13',
                                                                                                                                                                                  )、
配列(
'名前' => '中国カンフー'、
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        )、
);
print_r($arr);
//注: 数値的に並べ替えると、153 は 65 より小さくなります
$temp = sysSortArray($arr,"名前","SORT_ASC","タイプ","SORT_DESC","サイズ","SORT_ASC","SORT_STRING");
print_r($temp);
?>




1 次元配列のソートに関しては、PHP に付属の関数を使用してデータのソートを完全に実装できます。したがって、ここで話しているのは、カスタム関数を使用してニーズを満たすことが比較的不可能な方法です。







http://www.bkjia.com/PHPjc/631627.html

www.bkjia.com

tru​​e

技術記事

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

See all articles