SYNCERのロゴ
アイキャッチ画像

配列を文字数順に並び替える方法

配列を文字数順に並び替えるには、array_multisort()とarray_map()とstrlen()を組み合わせましょう。

サンプルコード

SORT_ASC(昇順)、SORT_DESC(降順)を目的で使い分けて下さい。元の配列が変更されます。

一次元配列

<?php
	$array = [ "aaa", "b", "cccc", "dd" ] ;

	array_multisort( array_map( "strlen", $array ), SORT_ASC, $array ) ;

多次元配列

array_column()の引数に、対象のキー名を指定します。

<?php
	$array = [
		[
				"A" => "aaa",
				"B" => "hoge" ,
		] ,
		[
				"A" => "b",
				"B" => "fuga" ,
		] ,
		[
				"A" => "cc",
				"B" => "piyo" ,
		] ,
	] ;

	array_multisort( array_map( "strlen", array_column( $array, "A" ) ), SORT_ASC, $array ) ;

デモ

一次元配列の場合

昇順

<?php
/*** このコードは編集できます。 ***/

	$array = [ "aaa", "b", "cccc", "dd" ] ;

	array_multisort( array_map( "strlen", $array ), SORT_ASC, $array ) ;

	var_dump( $array ) ;
array(4) {
  [0]=>
  string(1) "b"
  [1]=>
  string(2) "dd"
  [2]=>
  string(3) "aaa"
  [3]=>
  string(4) "cccc"
}

降順

<?php
/*** このコードは編集できます。 ***/

	$array = [ "aaa", "b", "cccc", "dd" ] ;

	array_multisort( array_map( "strlen", $array ), SORT_DESC, $array ) ;

	var_dump( $array ) ;
array(4) {
  [0]=>
  string(4) "cccc"
  [1]=>
  string(3) "aaa"
  [2]=>
  string(2) "dd"
  [3]=>
  string(1) "b"
}

多次元配列の場合

昇順

<?php
/*** このコードは編集できます。 ***/

	$array = [
		[
				"A" => "aaa",
				"B" => "hoge" ,
		] ,
		[
				"A" => "b",
				"B" => "fuga" ,
		] ,
		[
				"A" => "cc",
				"B" => "piyo" ,
		] ,
	] ;

	array_multisort( array_map( "strlen", array_column( $array, "A" ) ), SORT_ASC, $array ) ;

	var_dump( $array ) ;
array(3) {
  [0]=>
  array(2) {
    ["A"]=>
    string(1) "b"
    ["B"]=>
    string(4) "fuga"
  }
  [1]=>
  array(2) {
    ["A"]=>
    string(2) "cc"
    ["B"]=>
    string(4) "piyo"
  }
  [2]=>
  array(2) {
    ["A"]=>
    string(3) "aaa"
    ["B"]=>
    string(4) "hoge"
  }
}

降順

<?php
/*** このコードは編集できます。 ***/

	$array = [
		[
				"A" => "aaa",
				"B" => "hoge" ,
		] ,
		[
				"A" => "b",
				"B" => "fuga" ,
		] ,
		[
				"A" => "cc",
				"B" => "piyo" ,
		] ,
	] ;

	array_multisort( array_map( "strlen", array_column( $array, "A" ) ), SORT_DESC, $array ) ;

	var_dump( $array ) ;
array(3) {
  [0]=>
  array(2) {
    ["A"]=>
    string(3) "aaa"
    ["B"]=>
    string(4) "hoge"
  }
  [1]=>
  array(2) {
    ["A"]=>
    string(2) "cc"
    ["B"]=>
    string(4) "piyo"
  }
  [2]=>
  array(2) {
    ["A"]=>
    string(1) "b"
    ["B"]=>
    string(4) "fuga"
  }
}
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年6月22日 (木)
コンテンツを公開しました。