目次
興味があるかもしれない記事:
ホームページ バックエンド開発 PHPチュートリアル PHP の複数フィールドのソートを指定するサンプルコード multi-Dimensional array_php example

PHP の複数フィールドのソートを指定するサンプルコード multi-Dimensional array_php example

Jun 23, 2018 pm 04:30 PM
php

この記事では主に、PHP の多次元配列の複数フィールドのソートを指定するサンプル コードを紹介します。編集者が非常に優れていると考えたので、参考として共有します。エディターに従って見てみましょう。

array_multisort メソッドの紹介

array_multisort — 複数の配列または多次元配列を並べ替える PHP の命令。マニュアル 次のように:

コードをコピー コードは次のとおりです:

bool array_multisort ( array &$arr [,mixed $arg = SORT_ASC [,mixed $arg = SORT_REGULAR [,mixed $ ... ]]] )

パラメータ

arr
ソートされる配列。

#arg
SORT_ASC、SORT_DESC、SORT_REGULAR、SORT_NUMERIC、SORT_STRING の各パラメーターは、別の配列または前の配列の並べ替えフラグ オプション パラメーターにすることができます。 #追加の引数。

最初に、指定された多次元配列の 1 つのフィールドの並べ替えを実装します。ここでは、配列を並べ替える必要があります。フィールドの 1 つによると、配列の前提条件は次のとおりです。

  $array = array(
      0=>array('id'=>8,'name'=>'Tom'),
      1=>array('id'=>9,'name'=>'Peter'),
      2=>array('id'=>5,'name'=>'Jack')
  );
ログイン後にコピー


の ID 値に従って並べ替える必要があります。変換された配列の形式は次のとおりです。

  $array = array(
      0=>array('id'=>5,'name'=>'Jack')
      1=>array('id'=>8,'name'=>'Tom'),
      2=>array('id'=>9,'name'=>'Peter')
  );
ログイン後にコピー


上記の変換を完了するには、array_multisort を使用する必要があります。

  function sortArrByOneField(&$array, $field, $desc = false){
    $fieldArr = array();
    foreach ($array as $k => $v) {
     $fieldArr[$k] = $v[$field];
    }
    $sort = $desc == false ? SORT_ASC : SORT_DESC;
    array_multisort($fieldArr, $sort, $array);
  }
ログイン後にコピー


配列の各配列の $field を保存することで、受信した array_multisort の並べ替えに参加します。 1 ビット配列 fieldArr でソートされます。フィールド配列の値は次のとおりです。

array(0=>8,1=>9,2=>5)
ログイン後にコピー


array_multisort を渡した後は、$field を 1 つソートするのと同じです。次元配列を取得し、ソートされたキーに従って、ソートされる受信配列を再構築します。

複数のフィールドを指定して多次元配列の並べ替えを実装する上記の例は、次のフィールドを指定して多次元配列の並べ替えを実装する方法を説明しています。フィールドは 1 つですが、必要に応じて、配列を並べ替えるために複数のフィールドを指定することをどのように考えますか?

フィールドはいくつありますか? 2、3、あるいはそれ以上なので、この不確実な要素を排除する必要があります。



まず、並べ替え用に 2 つのフィールドを指定するための 2 つのオプションを見てみましょう:

  $arr = array(
    '0' => array(
      'id' => 3,
      'age' => 27 
    ),
    '1' => array(
      'id' => 5,
      'age' => 50
    ),
    '2' => array(
      'id' => 4,
      'age' => 44
    ),
    '3' => array(
      'id' => 3,
      'age' => 78
    ) 
  );
  foreach ( $arr as $key => $row ){
    $id[$key] = $row ['id'];
    $age[$key] = $row ['age'];
  }
  array_multisort($id, SORT_ASC, $age, SORT_DESC, $arr);
  print_r($arr);
  //result:Array([0]=>Array(['id']=>3 ['age']=>78) [1]=>Array(['id']=>3 ['age']=>27) [2]=>Array(['id']=>4 ['age']=>44) [3]=>Array(['id']=>5 ['age']=>50))
ログイン後にコピー


Reconstruction In上記のコードでは、PHP の func_get_args 関数を使用して受信値を動的に取得する限り、複数のフィールドの数が不確実である問題を解決できます。実装は次のとおりです。

  $array1 = array(
        0=>array('id'=>8,'name'=>'Apple','age'=> 18),
        1=>array('id'=>8,'name'=>'Bed','age'=>17),
        2=>array('id'=>5,'name'=>'Cos','age'=>16),
        3=>array('id'=>5,'name'=>'Cos','age'=>14)
  );
  function sortArrByManyField(){
    $args = func_get_args();
    if(empty($args)){
      return null;
    }
    $arr = array_shift($args);
    if(!is_array($arr)){
      throw new Exception("第一个参数不为数组");
    }
    foreach($args as $key => $field){
      if(is_string($field)){
        $temp = array();
        foreach($arr as $index=> $val){
          $temp[$index] = $val[$field];
        }
        $args[$key] = $temp;
      }
    }
    $args[] = &$arr;//引用值
    call_user_func_array('array_multisort',$args);
    return array_pop($args);
  }
  $arr = sortArrByManyField($array1,'id',SORT_ASC,'name',SORT_ASC,'age',SORT_DESC);
  print_r($arr);
ログイン後にコピー


実行結果は次のとおりです。

array(4 ){
[0] => array(3){

"cos"
> => ] = & gt; int >int(17)
}
}



以上がこの記事の全内容です。皆様のお役に立てれば幸いです。皆さんもphp中国語ウェブサイトを応援していただければ幸いです。

興味があるかもしれない記事:

PHP は複数の画像のアップロード関数と単一の画像のアップロード関数を実装します。php の例

php は名前ベースを実装します。クラスとメソッドのアルファベット順(インスタンスコード) php サンプル

PHP 携帯電話 SMS 認証コード実装プロセスの詳細な説明 php サンプル

以上がPHP の複数フィールドのソートを指定するサンプルコード multi-Dimensional array_php exampleの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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:27 PM

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

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

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

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

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

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()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

See all articles