爆炸,数组访问和PHP语法

时间:2011-12-13 21:52:46

标签: php syntax explode

只是想知道为什么这种语法在PHP中不起作用?大多数人使用什么解决方法 - 如果你想编写简洁的单行代码?

$str = explode(" ", "foo bar")[0];
// thought $str would be $foo. instead I get error.
// guess I hadn't noticed this issue before.

3 个答案:

答案 0 :(得分:2)

PHP不可链接,这意味着您无法将explode函数与访问者(例如[0])结合使用。你想要做的是:

$arr = explode(" ", "foo bar");
$str = $arr[0];

“可链接”可能不是正确的词,但无论如何,你不能组合这样的功能。

答案 1 :(得分:2)

正如人们所说,不可能那样做。如果你真的,真的希望在一行中完成,你可以使用三元语句。

$str = ($tmp=explode(" ", "foo bar")) ? $tmp[0] : '';
echo $str; // "foo"

更新

如果将其包装成函数,这看起来会“不那么难看”。

function single_explode($delim, $str, $index) {
    return ($tmp=explode($delim, $str)) ? $tmp[$index] : '';
}

$str = single_explode(" ", "foo bar", 0);

echo $str;

答案 2 :(得分:0)

另一种方法是使用array_shift,它会丢弃数组的第一个元素并将其返回。

<?php
    echo array_shift(explode(" ", "foo bar")); // === foo
?>

full example。不要在严格模式下使用它。