> 백엔드 개발 > PHP 튜토리얼 > php使用explode分割字符串新手容易忽略的问题

php使用explode分割字符串新手容易忽略的问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-06-20 12:35:47
원래의
997명이 탐색했습니다.

1.explode方法说明

explode方法可以使一个字符串按某一个字符串作为边界点来分割成数组。

array explode ( string $delimiter , string $string [, int $limit ] )1
로그인 후 복사

返回由字符串组成的数组,每个元素都是string的一个子串,被字符串delimiter作为边界点分割出来。

参数说明:
delimiter
边界上的分隔字符。

string
输入的字符串

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 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
로그인 후 복사



使用,分割字符串,limit为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.容易忽略的问题

一般我们会使用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    }}?>
로그인 후 복사


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿