配列内の空要素を削除する方法令和2年 5月 2日 作成

0033

概略

「array_filter関数」を利用して、配列内の空要素を削除する

手段

「array_filter関数」を使用。

「array_filter関数」はコールバック関数を使用して配列の要素をフィルタリングする関数です。

実装方法

構文

array_filter(対象配列, コールバック関数, mode[オプション パラメーター])

サンプル 1:コールバック関数無し

<?php
	$list = array('apple', 'orange', '0', 0, '', null, false, 'remon');

	$result = array_filter($list);
?>

// 結果
var_dump($result);
array(2) {
	[0]=> string(5) "apple"
	[1]=> string(6) "orange"
	[6]=> string(5) "remon"
}

コールバック関数を指定していない場合[空の要素]・['0']・[0]・[null]・[false]値がフィルタリング(排除)される
(PHPの型変換で[falseに]なるものは全部排除される)

サンプル 2:コールバック関数を指定しフィルタリング(排除)する要素を明確に決める

<?php
	$list = array('apple', 'orange', '0', 0, null, false, 'remon');
	
	function myfilter($val){
		return (!empty($vl) && $val !== '0' && $val !== 0 && !is_null($val));
	}
	$result = array_filter($list, 'myfilter');
?>

// 結果
var_dump($result);
array(2) {
	[0]=> string(5) "apple"
	[1]=> string(6) "orange"
	[6]=> string(5) "remon"
}

第三引数のmode[オプション]にて、コールバック関数に[配列のキー][配列の値とキーの両方]を送るのかを指定することができる。

【ARRAY_FILTER_USE_KEY】:配列のキーだけをコールバック関数の引数として渡す

【ARRAY_FILTER_USE_BOTH】:値とキーの両方をコールバック関数の引数として渡す


サンプル 3:第三引数を指定

<?php
	$list = array(0 => 'apple', 1 => 'orange', 2 => 'remon');
	
	function myfilter($val){
		return ($val <= 1);
	}
	$result = array_filter($list, 'myfilter', ARRAY_FILTER_USE_KEY);
?>

// 結果
var_dump($result);
array(2) {
	[0]=> string(5) "apple"
	[1]=> string(6) "orange"
}

考察

フィルター条件を思いのままに作成できるので汎用性がとても高く、利用する機会も増えそうです。

第三引数を指定すればさらに高度なフィルタリングを行うことが可能です。


注意点

第三引数のmode[オプション]が使用できる環境は PHPバージョン5.6.0 以降。

ARRAY_FILTER_USE_BOTHを指定した場合、値とキーの両方が送られるので、コールバック関数の引数も必ず2つ。第一引数に配列の「値」、第二引数に配列の「キー」となります。通常配列の「キー => 値」と逆になる点に注意が必要です。

最後までお読み下さり ありがとうございました。記事はここ迄です。

尚、本記事は作成から「3年以上」経過しています。

記事作成当時と現在の状況等により内容が適切でない場合があります。また、リンク切れが生じている場合もあります事を予めご了承下さい。

お気に入りに登録しますとお気に入り記事を一元管理でき、再度閲覧したい場合等 容易に記事を探し出す事ができますのでご活用下さい。

下段にはコメントを掲載しております。

広告バナー

コメント

頂いたコメントを下記に掲載しております。更に下部にはコメント投稿フォームを設けております。

注意事項を確認・了承した上、コメント投稿お願いいたします。

注意事項に該当するコメントにつきましては、事前告知なしに投稿したコメントの削除を行う場合があります。

予めご了承下さい。

  • 記事内容と無関係なコメント
  • 公序良俗に反するコメント
  • 個人情報や法令違反を含むコメント
  • その他、管理者が不適切と判断したコメント

現在 頂いているコメントはありません

返信先(コメント管理番号)コメントに対し返信する場合のみ
お名前・ハンドルネーム2~32文字内で入力下さい
メールアドレス公開される事はありません
電話番号半角数字+ハイフンで入力下さい
コメント全角500文字内で入力下さい