PHPで配列の値が空の要素を削除したい時

PHPで配列の値が空の要素を削除したい時

すぐ忘れるので忘れないように備忘録

keyは保持されたまま要素が消せるのでなにかと使うのにすぐ忘れます。。

PHP: array_filter – Manual

5 Replies to “PHPで配列の値が空の要素を削除したい時”

  1. これだと0という数値や”0″という文字、falseもnullも消されてしまいませんかね?


    $array = array("", "", "hoge",0,"0",false,null);
    $array = array_filter($array);
    var_dump($array);

    array
    2 => string ‘hoge’ (length=4)

    1. そうですね、残念ながらというかPHPは0の要素やnullの要素は空の要素とみなしてしまうので

      内部的にempty()で判定しているんじゃないかと思います

      1. えーとarray_filter()関数は第2引数にコールバック関数を指定できるので、その関数で文字列が空かどうか判定してあげないとダメなのでは?という話でした。
        http://php.net/manual/ja/function.array-filter.php

        なので下記サイトにあるように’strlen’とかを指定すれば文字列の長さが0の物を削除できて良いかと思います。この場合でも要素が配列の場合とかはまた微妙な気はしますが。
        http://suin.asia/2009/03/13/array-filter.html

        1. あー、なるほど。

          そこまで厳密に使おうと思ってメモってたわけでもないので大丈夫ですがPHP5.3以降なら無名関数使えばちゃんとすることも出来そうですね

          1. そうですね。
            厳密にやりたかったら無名関数は良いですね。

コメントを残す