平成30/ 2018-12-19 21:46
PHP array_filter() /2017.01.30.00


##############################
#
$array = array('hoge', 100, '', '0', 0);
$array = array_filter($array, function ($k) {
  return $k !== '';
});
# $array = ['hoge', 100, '0', 0];

~~~~
空文字列の他に FALSE や NULL も削除されて良いのであれば、更にシンプルに書くこともできます。
下記の場合、空文字列は削除されますが、'0' と 0 が残ります。

$array = array('hoge', 100, '', '0', 0);
$array = array_filter($array, 'strlen');

# $array = ['hoge', 100, '0', 0];

~~~~
Thanks.

PHP の array_filter関数でゼロを残す方法
http://qiita.com/ina6ra/items/349e40bf8e4334225d92


##############################
# 配列も、ちゃんと除去されます。
#

Array
(
    [hope_area] =>
    [p] => 1
    [pay_unit] =>
    [timespan] => Array
        (
        )
    [or_over_time_type_check_key] =>
)
の場合、以下になる。
----
Array
(
    [p] => 1
)




-------------------------------------------------------------
$arr[] = "";
$arr[] = "aa";
$arr = array_filter($arr);
print_r($arr);
>>
Array
(
    [1] => aa
)
<<
空文字は削除されるので、
$arr[0] は存在しなくなり、
$arr[1] に値がある。

$arr[] = "";
$arr[] = "";
の場合は、
count($arr) = 0 になる。

array_filter($arr, "strlen");
の記述もできる。





( Thanks. )
array_filter
http://php.net/manual/ja/function.array-filter.php

PHPで配列の値が空の要素を削除したい時
http://nob-log.info/2011/02/09/php%E3%81%A7%E9%85%8D%E5%88%97%E3%81%AE%E5%80%A4%E3%81%8C%E7%A9%BA%E3%81%AE%E8%A6%81%E7%B4%A0%E3%82%92%E5%89%8A%E9%99%A4%E3%81%97%E3%81%9F%E3%81%84%E6%99%82/
例2 callback がない array_filter()
<?php

$entry = array(
             0 => 'foo',
             1 => false,
             2 => -1,
             3 => null,
             4 => ''
          );

print_r(array_filter($entry));
?>
上の例の出力は以下となります。
Array
(
    [0] => foo
    [2] => -1
)





配列, 空白, 削除