explode方法能够使一个字符串按某一个字符串做为边界点来分割成数组。php
array explode ( string $delimiter , string $string [, int $limit ] )1
返回由字符串组成的数组,每一个元素都是string的一个子串,被字符串delimiter做为边界点分割出来。数组
参数说明:
delimiter
边界上的分隔字符。spa
string
输入的字符串code
limit
若是设置了limit参数而且是正数,则返回的数组最多包含limit个元素,而最后那个元素将包含string的剩余部分。
若是limit参数是负数,则返回除了最后的-limit个元素外的全部元素。
若是limit是0,则会被当作1。orm
使用,分割字符串字符串
<?php$str = '1,2,3,4,5,6,7,8,9';$arr = explode(',', $str);echo '<pre>'; print_r($arr);echo '</pre>';?>1234567
输出:string
Array( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9)123456789101112
使用,分割字符串,limit为正数it
<?php$str = '1,2,3,4,5,6,7,8,9';$arr = explode(',', $str, 5);echo '<pre>'; print_r($arr);echo '</pre>';?>1234567
输出:class
Array( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5,6,7,8,9)12345678
使用,分割字符串,limit为负数foreach
<?php$str = '1,2,3,4,5,6,7,8,9';$arr = explode(',', $str, -3);echo '<pre>'; print_r($arr);echo '</pre>';?>1234567
输出:
Array( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6)123456789
使用,分割字符串,limit为0
<?php$str = '1,2,3,4,5,6,7,8,9';$arr = explode(',', $str,0);echo '<pre>'; print_r($arr);echo '</pre>';?>1234567
输出:
Array( [0] => 1,2,3,4,5,6,7,8,9)1234
通常咱们会使用explode来分割id字符串之类的数据
<?php$ids = '1,2,3,4';$data = explode(',', $ids);if($data){ foreach($data as $k=>$v){ // do sth } }?>123456789
正常状况下ids不为空,看代码也不会发现什么问题,由于有判断if(data);通常会认为已经作了空的处理。
但实际状况倒是ids=null, data却不是空,会致使foreach里执行的代码出问题。
<?php$ids = null;$data = explode(',', $ids);if($data){ print_r($data); }else{ echo 'null'; }?>123456789
由于ids=null,使用explode分割,得出的数组是Array ( [0] => )而不是Array()。
因此判断须要修改一下才能避免问题发生
<?php$ids = null;$data = explode(',', $ids);if(isset($data[0]) && $data[0]){ foreach($data as $k=>$v){ // do sth } }?>