Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

追記(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];

参考リンク

参考リンク(追記)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away