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

jacklove
發布: 2023-03-31 06:56:01
原創
2298 人瀏覽過

1.explode方法說明

explode方法可以讓一個字串以某一個字串作為邊界點來分割成陣列。

array explode ( string $delimiter , string $string [, int $limit ] )
登入後複製

傳回由字串組成的陣列,每個元素都是string的子字串,被字串delimiter當作邊界點分割出來。

參數說明:
delimiter
邊界上的分隔字元。

string
輸入的字串

limit
如果設定了limit參數且是正數,則傳回的陣列最多包含limit個元素,而最後那個元素將包含string的剩餘部分。
如果limit參數是負數,則傳回除了最後的-limit個元素外的所有元素。
如果limit是0,則會被當成1。

2.範例

使用,分割字串

<?php$str = &#39;1,2,3,4,5,6,7,8,9&#39;;$arr = explode(&#39;,&#39;, $str);echo &#39;<pre class="brush:php;toolbar:false">&#39;;
print_r($arr);echo &#39;
';?>
登入後複製

輸出:

Array(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9)
登入後複製

使用,分割字串,limit為正數

<?php$str = &#39;1,2,3,4,5,6,7,8,9&#39;;$arr = explode(&#39;,&#39;, $str, 5);echo &#39;<pre class="brush:php;toolbar:false">&#39;;
print_r($arr);echo &#39;
';?>
登入後複製

輸出:

Array(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5,6,7,8,9)
登入後複製

#使用,分割字串,limit為負數

<?php$str = &#39;1,2,3,4,5,6,7,8,9&#39;;$arr = explode(&#39;,&#39;, $str, -3);echo &#39;<pre class="brush:php;toolbar:false">&#39;;
print_r($arr);echo &#39;
';?>
登入後複製

輸出:

Array(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6)
登入後複製

使用,分割字串,limit為0

<?php$str = &#39;1,2,3,4,5,6,7,8,9&#39;;$arr = explode(&#39;,&#39;, $str,0);echo &#39;<pre class="brush:php;toolbar:false">&#39;;
print_r($arr);echo &#39;
';?>
登入後複製

#輸出:

Array(
    [0] => 1,2,3,4,5,6,7,8,9)
登入後複製

3.容易忽略的問題

一般我們會用explode來分割id字串之類的資料

<?php$ids = &#39;1,2,3,4&#39;;$data = explode(&#39;,&#39;, $ids);if($data){    foreach($data as $k=>$v){        // do sth
    }
}?>
登入後複製

正常情況下ids不為空,看程式碼也不會發現什麼問題,因為有判斷if(data);一般會認為已經做了空的處理。
但實際情況卻是ids=null, data卻不是空,會導致foreach裡執行的程式碼出問題。

<?php$ids = null;$data = explode(&#39;,&#39;, $ids);if($data){
    print_r($data);
}else{    echo &#39;null&#39;;
}?>
登入後複製

因為ids=null,使用explode分割,得到的數組是Array ( [0] => )而不是Array()

所以判斷需要修改一下才能避免問題發生

<?php$ids = null;$data = explode(&#39;,&#39;, $ids);if(isset($data[0]) && $data[0]){    foreach($data as $k=>$v){        // do sth
    }
}?>
登入後複製

本文講解了php使用explode分割字串新手容易忽略的問題,更多相關內容請關注php中文網。

相關推薦:

關於mysql互換表中兩列資料方法的解說

如何透過php產生0~1隨機小數方法

關於mysql 時間戳格式化函數from_unixtime的使用說明

以上是php使用explode分割字串新手容易忽略的問題的講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!