2013-04-30 77 views
3

假設以下字符串:優雅的方式拆分字符串時,強行使兩個數組元素

$string = 'entry1_entry2'; 

我想要做的是這樣的:

list($entry1, $entry2) = explode('_', $string); 

我現在的問題是是否有任何優雅的方式來強制爆炸(或任何其他功能)獲得2個陣列項目最低?你可以指定第三個參數來獲取最多2個元素,但我想要一個最小值。如果將有這樣的字符串:

$string = 'entry1'; 

第二線將得到NOTICE因爲僅存在一個數組元素。最好的辦法是不檢查分隔符的存在數組或字符串。

+0

當你說「第二行」時,它讓我想知道你是否正在沿着這些行echo $ array [0]。 $ array [1]',你可以只是一個foreach循環,完全避免錯誤! – Dale 2013-04-30 11:13:23

回答

10

你很可能array_pad

list($entry1, $entry2) = array_pad(explode('_', $string), 2, NULL); 

array_pad

+0

+1,但我會使用NULL而不是空字符串作爲值; – feeela 2013-04-30 11:12:06

+0

謝謝,我更新了它。當然取決於上下文,但你可能希望能夠區分「foo」和「foo _」...... – misberner 2013-04-30 11:13:41

+0

不同之處在於,當進行一些像'isset($ entry2)'這樣的測試時,如果你設置變量爲FALSE爲NULL。 – feeela 2013-04-30 11:15:30

0

我建議存儲多個變量裏面explode僅僅是不好的做法,當你無法執行你的數據的完整性。

如果您不能簡單地使用

$entries = explode($string); 

,避免一切不必要的併發症?

相關問題