LoginSignup
20
21

More than 5 years have passed since last update.

PHP の array_filter関数でゼロを残す方法

Last updated at Posted at 2015-02-07

追記(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' は残って空文字列が削除されました。

やったねたえちゃん!

除外するキーワードを指定する。(追記)

また、空文字列の他に FALSENULL も削除されて良いのであれば、更にシンプルに書くこともできます。
下記の場合、空文字列は削除されますが、'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];

参考リンク

参考リンク(追記)

20
21
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
21