0

我有一个字符串

$input = 'Hello | world';

我想把它爆炸成Helloand 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);

是否有可能使这种单线更简单?

4

3 回答 3

2

如何使用列表

$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}|"));
于 2013-08-01T07:42:05.910 回答
2
$output = array_slice(explode(" | ", "$input | "), 0, 2);
于 2013-08-01T07:44:32.890 回答
-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));
}

如果您从 explode 函数中省略第三个参数,即使有更多,您也只会得到前两个段 - 这将类似于您的 array_slice 部分。

于 2013-08-01T07:48:32.623 回答