ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して、Explore を使用して文字列を分割するときに初心者が見落としやすい問題

PHP を使用して、Explore を使用して文字列を分割するときに初心者が見落としやすい問題

WBOY
WBOYオリジナル
2016-06-20 12:35:47952ブラウズ

1.explode メソッドの説明

explode メソッドは、特定の文字列を境界点として文字列を配列に分割できます。

array explode ( string $delimiter , string $string [, int $limit ] )1

各要素は文字列の部分文字列であり、境界点として文字列区切り文字で区切られます。

パラメータの説明:
delimiter
境界の区切り文字。

string
入力文字列

limit
limit パラメータが設定されており、正の数値の場合、返される配列には最大でもlimit要素が含まれ、最後の要素には文字列が含まれます。残りの部分。
limit パラメーターが負の数の場合、最後の -limit 要素を除くすべての要素が返されます。
limitが0の場合は1として扱われます。


2. 例

を使用して、文字列

<?php$str = '1,2,3,4,5,6,7,8,9';$arr = explode(',', $str);echo '<pre class="brush:php;toolbar:false">';print_r($arr);echo '
';?>1234567

を分割します:

Array(    [0] => 1    [1] => 2    [2] => 3    [3] => 4    [4] => 5    [5] => 6    [6] => 7    [7] => 8    [8] => 9)123456789101112



を使用して文字列を分割します。limit は正の数です

<?php$str = '1,2,3,4,5,6,7,8,9';$arr = explode(',', $str, 5);echo '<pre class="brush:php;toolbar:false">';print_r($arr);echo '
';?>1234567

出力:

Array(    [0] => 1    [1] => 2    [2] => 3    [3] => 4    [4] => 5,6,7,8,9)12345678



文字列を分割するために使用します。limit は負の数です

<?php$str = '1,2,3,4,5,6,7,8,9';$arr = explode(',', $str, -3);echo '<pre class="brush:php;toolbar:false">';print_r($arr);echo '
';?>1234567

出力:

Array(    [0] => 1    [1] => 2    [2] => 3    [3] => 4    [4] => 5    [5] => 6)123456789



使用、文字列の分割、制限は 0

<?php$str = '1,2,3,4,5,6,7,8,9';$arr = explode(',', $str,0);echo '<pre class="brush:php;toolbar:false">';print_r($arr);echo '
';?>1234567

出力:

Array(    [0] => 1,2,3,4,5,6,7,8,9)1234


3. 無視されやすい問題

一般に、ID 文字列などのデータを分割するには、explode を使用します。

<?php$ids = '1,2,3,4';$data = explode(',', $ids);if($data){    foreach($data as $k=>$v){        // do sth    }}?>123456789

通常の状況では、ID は空ではなく、コードを見ると問題は見つかりません。 , if (データ) の判定があるため、通常は空の処理が行われたと見なされます。
しかし、実際の状況は ids=null ですが、データは空ではないため、foreach で実行されるコードで問題が発生します。

<?php$ids = null;$data = explode(',', $ids);if($data){    print_r($data);}else{    echo 'null';}?>123456789

ids=null であるため、explode を使用して分割すると、結果の配列は Array() ではなく Array ([0] =>) になります。

問題を回避するには判断を修正する必要があります

<?php$ids = null;$data = explode(',', $ids);if(isset($data[0]) && $data[0]){    foreach($data as $k=>$v){        // do sth    }}?>


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。