2013-05-20 127 views
4

我遇到了一些PHP爆炸函數的問題。PHP爆炸函數空數組元素

我想爆炸字符串是:

,.stl,.ppl 

目前,我使用的爆炸功能,例如:

explode(',',',.stl,.ppl'); 

很不幸,這是有問題的,它返回三個字符串:

array(3) { [0]=> string(0) "" [1]=> string(4) ".stl" [2]=> string(4) ".ppl" } 

爲什麼第一個字符串是空白的?

顯然的解決方案是跳過數組的第一個元素,但是,爲什麼我需要這樣做?

不應該explode()函數自動刪除這個空白數組,或甚至根本沒有生成它?

+1

你有一個領先的','字符串中,所以在技術上,你有三個項目,第一個是空白的,所以'expldoe'只是做什麼是你的期望錯誤。你可能想在字符串上使用'trim'來修剪前導/尾隨'''來解決這個問題 – J0HN

回答

10

這是正常行爲。您需要了解空白字符串是有效的字符串值,因此PHP會將其返回。

對於元素可能不存在以保留結構的情況非常有用。

如果你不想要的話,你可以簡單地將其過濾:

$array = array_filter(explode(",", $string)); 

但千萬注意,這將會過濾掉任何計算結果爲假,以及(如0)。

+0

謝謝!我會的時候會接受你的答案! :) – James

4

您還可以trim的字符串中的領先「」 explode(',',trim(',.str,.ppl'),',')

+1

這是正確的解決方案。但是,我的上帝,看起來像很多逗號。 – moopet

+0

是的,要知道的事情,爲了讀者的利益,是trim()可以從字符串的開始和結尾刪除任何字符,而不僅僅是空白。因此,例如,當需要拆分URL或文件/目錄路徑的片段時,trim($ foo,'/')'很有用。 –