ホーム › IT関連 › 開発 › プログラミング プログラミング PHPで配列の値が空の要素を削除したい時 2011年2月9日 · 更新 2014年4月30日 X で共有 はてブ すぐ忘れるので忘れないように備忘録 ~~~ $array = array(“”, “”, “hoge”); $array = array_filter($array); var_dump($array); ~~~ ~~~ array(1) { [2]=> string(4) “hoge” } ~~~ keyは保持されたまま要素が消せるのでなにかと使うのにすぐ忘れます。。 PHP: array_filter – Manual PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE) posted with カエレバ 鈴木 憲治,山田 直明,山本 義之,浅野 仁,櫻井 雄大,安藤 建一 翔泳社 2013-10-22 Amazon 楽天市場 #PHP#メモ の のぶダイバー、写真を撮る人、EC-CUBE の開発者。世界のウミウシ、かさね日記、きれるまえ を作っています。詳しく コメント(5) chobitnet2013-02-04 これだと0という数値や”0″という文字、falseもnullも消されてしまいませんかね? $array = array("", "", "hoge",0,"0",false,null); $array = array_filter($array); var_dump($array); array 2 => string ‘hoge’ (length=4) のぶ2013-02-04 そうですね、残念ながらというかPHPは0の要素やnullの要素は空の要素とみなしてしまうので 内部的にempty()で判定しているんじゃないかと思います chobitnet2013-02-04 えーとarray_filter()関数は第2引数にコールバック関数を指定できるので、その関数で文字列が空かどうか判定してあげないとダメなのでは?という話でした。 http://php.net/manual/ja/function.array-filter.php なので下記サイトにあるように’strlen’とかを指定すれば文字列の長さが0の物を削除できて良いかと思います。この場合でも要素が配列の場合とかはまた微妙な気はしますが。 http://suin.asia/2009/03/13/array-filter.html のぶ2013-02-04 あー、なるほど。 そこまで厳密に使おうと思ってメモってたわけでもないので大丈夫ですがPHP5.3以降なら無名関数使えばちゃんとすることも出来そうですね chobitnet2013-02-05 そうですね。 厳密にやりたかったら無名関数は良いですね。
コメント(5)
これだと0という数値や”0″という文字、falseもnullも消されてしまいませんかね?
$array = array("", "", "hoge",0,"0",false,null);
$array = array_filter($array);
var_dump($array);
array
2 => string ‘hoge’ (length=4)
そうですね、残念ながらというかPHPは0の要素やnullの要素は空の要素とみなしてしまうので
内部的にempty()で判定しているんじゃないかと思います
えーとarray_filter()関数は第2引数にコールバック関数を指定できるので、その関数で文字列が空かどうか判定してあげないとダメなのでは?という話でした。
http://php.net/manual/ja/function.array-filter.php
なので下記サイトにあるように’strlen’とかを指定すれば文字列の長さが0の物を削除できて良いかと思います。この場合でも要素が配列の場合とかはまた微妙な気はしますが。
http://suin.asia/2009/03/13/array-filter.html
あー、なるほど。
そこまで厳密に使おうと思ってメモってたわけでもないので大丈夫ですがPHP5.3以降なら無名関数使えばちゃんとすることも出来そうですね
そうですね。
厳密にやりたかったら無名関数は良いですね。