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 ) ;

降順

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

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

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

	var_dump( $array ) ;

多次元配列の場合

昇順

<?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 ) ;

降順

<?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 ) ;
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年6月22日 (木)
コンテンツを公開しました。