【 行列指定ソート 】

1. シチュエーション
2. ファイルの読込
3. 行データを配列に格納
4. ソート用フィールドを配列に格納する
5. 行列配列をソート用フィールド配列でソートする
6. 関数 matrix_sort

要求定義
  • CSVファイルの内容を任意のフィールドでソートする

  • 件数は大量では無い


  • 使用する関数
  • ファイル全体を読み込んで配列に格納する


  • 0001,パソコン,100000
    0002,ディスプレイ,30000
    0003,キーボート,1000
    0004,マウス,500
    

    <?
     
    	$line = file( "ソート用.csv" );
     
    ?>
    

    使用する関数
  • 文字列を文字列により分割する

  • 変数に含まれる要素の数を数える


  • <?
     
    	$line = file( "ソート用.csv" );
    	for( $i = 0; $i < count( $line ); $i++ ) {
    		$row[ $i ] = explode( ",", $line[ $i ] );
    	}
     
    ?>
    

    <?
     
    	$line = file( "ソート用.csv" );
    	for( $i = 0; $i < count( $line ); $i++ ) {
    		$row[ $i ] = explode( ",", $line[ $i ] );
    		$sort_field[ $i ] = $row[ $i ][ 2 ];
    	}
     
    ?>
    

    使用する関数
  • 複数の多次元の配列をソートする


  • <?
     
    	$line = file( "ソート用.csv" );
    	for( $i = 0; $i < count( $line ); $i++ ) {
    		$row[ $i ] = explode( ",", $line[ $i ]  );
    		$sort_field[ $i ] = $row[ $i ][ 2 ];
    	}
     
    	array_multisort( $sort_field, SORT_NUMERIC, $row );
     
    ?>
    

    <?
    # **********************************************************
    # 行列の指定フィールドでソートする
    # **********************************************************
    function matrix_sort( $array_matrix, $array_target, $sort_type ) {
     
    	for( $i = 0; $i < count( $array_matrix ); $i++ ) {
    		$sort_field[ $i ] = $array_matrix[ $i ][ $array_target ];
    	}
     
    	array_multisort( $sort_field, $sort_type, $array_matrix );
     
    }
     
    	$line = file( "ソート用.csv" );
    	for( $i = 0; $i < count( $line ); $i++ ) {
    		$row[ $i ] = explode( ",", $line[ $i ] );
    	}
     
    	matrix_sort( $row, 2, SORT_NUMERIC );
     
    ?>