explode メソッドは、特定の文字列を境界点として文字列を配列に分割できます。
array explode ( string $delimiter , string $string [, int $limit ] )1
各要素は文字列の部分文字列であり、境界点として文字列区切り文字で区切られます。
パラメータの説明:
delimiter
境界の区切り文字。
string
入力文字列
limit
limit パラメータが設定されており、正の数値の場合、返される配列には最大でもlimit要素が含まれ、最後の要素には文字列が含まれます。残りの部分。
limit パラメーターが負の数の場合、最後の -limit 要素を除くすべての要素が返されます。
limitが0の場合は1として扱われます。
を使用して、文字列
<?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
一般に、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 }}?>