9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

文字列配列から空文字を除去するバッドノウハウ

Last updated at Posted at 2014-10-19

このパターンは「配列の要素が全て文字列だと保証できる」場合以外では推奨できない。適用しやすいのは、explode()の返り値。

逆に、適用してはいけないのは $_GET, $_POST, $_REQUEST など(要素に配列が含まれうる)。

<?php
$path = '/hoge/fuga/piyo';

$split = explode('/', $path);
// => ['', 'hoge', 'fuga', 'piyo']
$split = array_filter(explode('/', $path), 'strlen');
// => ['hoge', 'fuga', 'piyo']

申しわけ程度に説明

  • strlen()は文字列の長さ(バイト数)を返す変哲もない函数
  • array_filter()は配列の各要素をコールバック函数に適用し、trueを返した値のみから構成される配列を返す
  • PHPの数値型は0false、それ以外がtrueに相当する

追記

忘れてたけど、array_filter()だとキーと値の対応は維持されたままなので、純粋な配列として扱ひたいときはarray_values()で振り直すと良いですよ。

つまりこんな感じ。

<?php
$split = array_values(array_filter(explode('/', $path), 'strlen'));

連想配列として扱っておきたい場合は特に何もしなくていい。

9
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?