2013-04-30 53 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); 

,避免一切不必要的并发症?

相关问题