Array_multisort 多次元配列のソート使用の完全なソリューション
1. まず最も単純な状況を見てみましょう。 2 つの配列があります:
$arr1 = array(1,9,5); $arr2 = array(6,2,4); array_multisort($arr1,$arr2); print_r($arr1); // 得到的顺序是1,5,9 print_r($arr2); // 得到的顺序是6,4,2
2 つの配列の値は最初から最後まで対応していると推定します。1 は 6 に、9 は 2 に、5 は 4 に対応します。
配列をもう 1 つ追加して、何が起こるか見てみましょう:
$arr1 = array(1,9,5); $arr2 = array(6,2,4); $arr3 = array(3,7,8); array_multisort($arr1,$arr2,$arr3);
結果を見ると、最初から最後まで 1 は 6 と 3 に対応しており、他の項目についても同様です。この対応は、マニュアルでは「ソート中に元のキー名の関連付けを保持する」と呼ばれるものです。
また、各配列をデータベーステーブルの列として考えることもできます。対応する 1、6、3 は 1 つのデータ行であり、9、2、7 は別のデータ行です。 。 。
array_multisort は、まず最初の配列(列として想像してください)でソートし、最初の配列(列)の値が同じであれば、2番目の配列(列)でソートします。
具体的には、次のプログラムを使用してテストできます:
$arr1 = array(1,9,5,9); $arr2 = array(6,2,4,1); $arr3 = array(3,7,8,0); array_multisort($arr1,$arr2,$arr3);
出力:
Array ( [0] => 1 [1] => 5 [2] => 9 [3] => 9 ) Array ( [0] => 6 [1] => 4 [2] => 1 [3] => 2 ) Array ( [0] => 3 [1] => 8 [2] => 0 [3] => 7 )
ここで、$arr1 が通常どおり昇順にソートされていることがわかります。ただし、$arr2 と $arr3 はソートされません。
しかし、よく見てみると、これら 3 つの配列の各要素は、実際には 1 対 1 に対応していることがわかりました。
2. 次にarray_multisortのパラメータについて説明します。この関数のパラメータは非常に柔軟です。最も単純なケースは、上記のように 1 または n 個の配列をパラメーターとして使用することです。各配列内の項目の数が同じである必要があることに注意してください。そうでない場合は、警告が表示されて並べ替えが失敗します。
このように array_multisort($arr1,$arr2,$arr3); デフォルトでは、すべての配列が昇順でソートされ、$arr2 を降順でソートして文字列として比較する場合は、次のように記述する必要があります。
array_multisort($arr1, $arr2, SORT_DESC, SORT_STRING, $arr3);
各配列の後にソート順序フラグまたはソート タイプ フラグを続けることができ、または両方のフラグを同時に表示することもできます。ただし、各配列の後に指定できるのは、各タイプのソート フラグ 1 つだけです。
詳細は次のとおりです:
ソート順序フラグ:
SORT_ASC - 昇順でソート(デフォルト)
SORT_DESC - 降順でソート
ソートタイプフラグ:
SORT_REGULAR - 通常の方法で項目を比較します(デフォルト) )
SORT_NUMERIC - 数値に基づいて項目を比較します
SORT_STRING - 文字列に基づいて項目を比較します
3. 最後に、array_multisort の実際的な効果は何ですか?
通常、並べ替えが必要な多次元配列がいくつかあります:
$guys = Array( [0] => Array ( [name] => jake [score] => 80 [grade] => A ) [1] => Array ( [name] => jin [score] => 70 [grade] => A ) [2] => Array ( [name] => john [score] => 80 [grade] => A ) [3] => Array ( [name] => ben [score] => 20 [grade] => B ) )
たとえば、成績によって逆順に並べ替え、成績が同じ場合は名前で昇順に並べ替えたいとします。注文。
現時点では、$guys の順序に従ってさらに 2 つの配列を作成する必要があります:$scores = array(80,70,80,20); $names = array('jake','jin','john','ben');
それから
array_multisort($scores, SORT_DESC, $names, $guys);
以上です
並べ替えるたびに、もっと柔軟にできますか?やらなければなりません 他の配列を取得しますか?実際、これは qeephp の helper_array クラスにうまくカプセル化されています。必要な方は、次の 2 つのメソッドを自分で変更できます。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
