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

1.explode方法說明

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


2.例子

使用,分割字符串字符串

<?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


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
    }
}?>
相關文章
相關標籤/搜索