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

配列から空要素を取り除く方法

配列の中から空文字の要素を取り除くには、array_filter()とstrlen()を組み合わせます。

サンプルコード

array_filter()にstrlen()を指定します。strlen()は文字数を返す関数なので、これが偽の値を返せば、array_filter()がその要素を削除してくれる仕組みです。

<?php
	$array = [ "a", "", "b", "", "c", false, ] ;

	$response = array_filter( $array, "strlen" ) ;

上記は欠点があり、真偽値のfalseも取り除いてしまいます。より厳密に、文字列の空文字だけを取り除きたい場合は下記の通りです。

<?php
	$array = [ "a", "", "b", "", "c", false, ] ;

function callback( $a ) {
	return !is_string( $a ) || strlen( $a ) ;
}

	$response = array_filter( $array, "callback" ) ;

デモ

緩いフィルター

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

	$array = [ "a", "", "b", "", "c", false, 0, ] ;

	$response = array_filter( $array, "strlen" ) ;

	var_dump( $response ) ;
array(4) {
  [0]=>
  string(1) "a"
  [2]=>
  string(1) "b"
  [4]=>
  string(1) "c"
  [6]=>
  int(0)
}

厳密なフィルター

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

	$array = [ "a", "", "b", "", "c", false, 0, ] ;

function callback( $a ) {
	return !is_string( $a ) || strlen( $a ) ;
}

	$response = array_filter( $array, "callback" ) ;

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