我有一个字符串
$input = 'Hello | world';
我希望将其分解为Hello
和world
,所以
$output = explode(' | ', $input);
如果我有
$input = 'Hello | world | third';
它返回3个元素,所以我必须切片这个数组:
$output = array_slice(explode(' | ', $input), 0, 2);
如果
$input = 'Hello';
然后我必须添加空元素以在输出中有两个,所以:
$output = array_slice(array_merge(explode(' | ', $input), array(null)), 0, 2);
是否可以简化这种单线程?
答案 0 :(得分:2)
如何使用list:
$first = null;
$second = null;
list($first, $second) = explode('|', $string);
修改强>
要阻止通知,您可以使用array_merge:
list($first, $second) = array_merge(explode('|', $string), array(null));
或强>
list($first, $second) = explode('|', "{$string}|"));
答案 1 :(得分:2)
$output = array_slice(explode(" | ", "$input | "), 0, 2);
答案 2 :(得分:-1)
您可以使用list()的组合并添加最大数量 由explode()函数接收的段,例如:
<?php
$in = array(
"Hello",
"Hello | world",
"Hello | My | Lovely | World"
);
foreach($in as $test){
list($one,$two) = explode(" | ", $test, 2);
print_r(array($one, $two));
}
如果你从爆炸功能中省略了第三个参数 即使有更多 - 那将只会得到前两个部分 然后将类似于你的array_slice部分。