HTML,CSS,Javascript,PHPを中心に、WEB制作時に忘れがちなTipsを紹介など。
$array = array_values(array_filter($array, "strlen"));
$array = array_filter($array, "strlen");
array_filter関数は第2引数に与えられた関数の結果を評価しTRUEの要素のみを出力する。strlen関数は文字列長(バイト数)を返却するので、空文字でなければ1以上が返却されTRUEとみなされる。この際、真偽値「FALSE」は0バイトとなるため、結果array_filterの戻りからも除外される点に注意。
通常の配列の場合は空要素が除去された結果の配列の添字が歯抜けになるのでarray_values関数で添字の振り直しを行うことで連続した配列に整形している。連想配列の場合は添字を振り直すと都合が悪い事が多いので、array_values関数は適用しない。
arr = arr.filter(function(v){return v});
配列オブジェクトのfilterメソッドは引数に与えられた関数の結果を評価し、TRUEの要素のみを出力する。上記の書き方の場合、falseはもちろんだが、数値の0もfalseとして処理される為、空要素として判定されてしまう点に注意。
フロントエンドはjavascript、サーバサイドはPHPという構成はよくあると思うけど、空要素を除去するというよく見られる共通のお作法の時点で挙動に差があるのでハマりがち。
基本的にはfilterに与える関数の結果を評価するので、独自に作成した関数をfilterに与えれば共通して使用で動かすこともできるし、filterの種類も変更できる。