explode()函数的使用
1、explode方法说明
explode 方法可以使一个字符串按照某一字符串作为边界点来分隔成数组
array explode(string $delimiter ,string $string [, int $limit ])
参数说明:
1.delimiter:边界上的分隔符,该参数不能是空字符串,必需
2.string:输入的字符串,必需
3.limit:可选
如果设置了limit参数并且是正数,则返回的数组最多包含limit个元素,而最后那个元素将包含string的剩余部分。
如果limit参数是负数,则返回除了最后的-limit个元素外的所有元素。
如果limit是0,则会被当做1
注释:该函数是二进制安全的
2、例子说明
使用,分隔字符串
<?php
$str = '1,2,3,4,5,6,7,8,9';
$arr = explode(',', $str);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
输出:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
)
使用,分割字符串,limit为整数
<?php
$str = '1,2,3,4,5,6,7,8,9';
$arr = explode(',', $str, 5);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
输出:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5,6,7,8,9
)
**使用,分隔字符,limit为负数
<?php
$str = '1,2,3,4,5,6,7,8,9';
$arr = explode(',', $str, -3);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
输出:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)
使用,分隔字符,limit为0
<?php
$str = '1,2,3,4,5,6,7,8,9';
$arr = explode(',', $str,0);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
输出:
Array
(
[0] => 1,2,3,4,5,6,7,8,9
)
3、容易忽略的问题
一般我们会使用explode来分割id字符串之类的数据
<?php
$ids = '1,2,3,4';
$data = explode(',', $ids);
if($data){
foreach($data as $k=>$v){
// do sth
}
}
?>
正常情况下ids不为空,看代码也不会发现什么问题,因为有判断if(data);一般会认为已经做了空的处理。
但实际情况却是ids=null, data却不是空,会导致foreach里执行的代码出问题。
<?php
$ids = null;
$data = explode(',', $ids);
if($data){
print_r($data);
}else{
echo 'null';
}
?>
因为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
}
}
?>
4、技术说明
返回值 | 返回字符串的数组 |
---|---|
PHP版本 | 4+ |
更新日志 | 在PHP4.0.1中,新增了 limit 参数。在PHP5.0.1 中,新增了对负数 limit 的支持。 |