追記(2015/2/8)
コメントで指摘があった以下の部分を修正しました。
- 記事内の表記を「空文字」から「空文字列」へと修正、統一。
- 「除外するキーワードを指定する。」のタイトルを「削除するキーワードを指定する。」に変更。
- 「削除するキーワードを指定する。」のコードを適切なものに修正。
- 「除外するキーワードを指定する。(追記)」の項目を追加。
- 「除外するキーワードを複数指定する。」のコードを適切なものに修正。
具体的な修正部分については変更履歴をご覧ください。
配列から空文字列を削除したい。
PHPの配列で空文字列を削除したい場合、下記のコードでできます。
$array = array('hoge', 100, '', '0', 0);
$array = array_filter($array);
# $array = ['hoge', 100];
空文字列だけを削除したいのに、'0'
と 0
も削除されてしまいます。
削除するキーワードを指定する。
先ほどの例から、空文字列だけを削除するコードは下記になります。
$array = array('hoge', 100, '', '0', 0);
$array = array_filter($array, function ($k) {
return $k !== '';
});
# $array = ['hoge', 100, '0', 0];
見事に '0'
は残って空文字列が削除されました。
やったねたえちゃん!
除外するキーワードを指定する。(追記)
また、空文字列の他に FALSE
や NULL
も削除されて良いのであれば、更にシンプルに書くこともできます。
下記の場合、空文字列は削除されますが、'0'
と 0
が残ります。
$array = array('hoge', 100, '', '0', 0);
$array = array_filter($array, 'strlen');
# $array = ['hoge', 100, '0', 0];
除外するキーワードを複数指定する。
複数の値を残したい場合、値チェックで in_array
関数を使えばOKです。
$array = array('hoge', 100, '', '0', 0);
$array = array_filter($array, function($k) {
if( in_array($k, array('0', 0), true) ) return true;
return !empty($k);
});
# $array = ['hoge', 100, '0', 0];