忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

PHP 標準関数その4・文字列の分割(explode)で空文字列を処理して再認識した件について


文字列の分割を行う関数の説明は以下の記事で行いましたが、今回は少し気になった件に付いて記します。

PHP 標準関数その1・文字列の分割・結合を行う関数(explode, implode)について



■一般的なexplode関数の使い方

先ずは explode 関数の一般的な使い方ですが、以下の様なソースを作成します。

<?php /* f1-explode.php */
//  分割する文字列
$str = "東京,名古屋,京都,大阪";
//  分割処理
$arr = explode(",", $str);
//  配列の内容表示
echo "<pre>";
var_dump($arr);
echo "</pre>";
?>

これをブラウザで実行すると以下の表示になります。

array(4) {
  [0]=>
  string(6) "東京"
  [1]=>
  string(9) "名古屋"
  [2]=>
  string(6) "京都"
  [3]=>
  string(6) "大阪"
}

変数「$arr」に指標「0」から順にカンマで分割された文字列が設定されています。
これ自体は特に問題は無いのですが explode 関数に渡す文字列が null または 空文字列(長さが 0 の文字列) の場合は どうなるのでしょうか。

■nullをexplode関数で分解処理

それでは早速やってみます。上記のソースの文字列を null に変えます。

<?php
$str = null;
//  分割処理
$arr = explode(",", $str);
//  配列の内容表示
echo "<pre>";
var_dump($arr);
echo "</pre>";
?>

これをWindowsコマンドプロンプトで実行すると以下の表示になります。

array(1) {
  [0]=>
  string(0) ""
}

KEYが「0」で内容が空文字列の要素が「1件」の配列が返されます。
なお null の部分を空文字列に変更しても同様の結果となります。

<?php
$str = "";
//  分割処理
$arr = explode(",", $str);
//  配列の内容表示
echo "<pre>";
var_dump($arr);
echo "</pre>";
?>

この結果から文字列に何かのデータが設定されていて、それを分解して使う場合、 null または 空文字列 だと1件の文字列が在ることになってしまいます。

もし、それでもいいのならば問題にはならないのですが、 不都合であれば、分解処理の前に対象文字列を null または 空文字列 の判定を行って 別処理を行う必要があります。












PR

コメント

コメントを書く