爆炸没有变量

时间:2011-08-28 13:09:10

标签: php

  

可能重复:
  Access array element from function call in php

而不是这样做:

$s=explode('.','hello.world.!');
echo $s[0]; //hello

我想做这样的事情:

echo explode('.','hello.world.!')[0];

但是在PHP中不起作用,该怎么做?可能吗?谢谢。

8 个答案:

答案 0 :(得分:3)

目前不是,但您可以为此目的编写一个函数:

function arrayGetValue($array, $key = 0) {
    return $array[$key];
}

echo arrayGetValue(explode('.','hello.world.!'), 0);

答案 1 :(得分:3)

正如oneliners所说,你必须等待支持阵列解除引用。现在常见的解决方法是为d($array,0)定义辅助函数。

在你的情况下,你可能不应该首先使用愚蠢的explode。 PHP中有更合适的字符串函数。如果你只想要第一部分:

echo strtok("hello.world.!", ".");

答案 2 :(得分:3)

它不漂亮;但您可以使用PHP Array functions执行此操作:

$input = "one,two,three";

// Extract the first element.
var_dump(current(explode(",", $input)));

// Extract an arbitrary element (index is the second argument {2}).
var_dump(current(array_slice(explode(",", $input), 2, 1)));

array_slice()的使用非常严重,因为它将分配第二个阵列,这是浪费。

答案 3 :(得分:2)

目前不是,但在PHP的更高版本中WILL be possible

答案 4 :(得分:2)

虽然不可能,但从技术上讲,你可以这样做来获取0元素:

echo array_shift(explode('.','hello.world.!'));

如果错误报告E_STRICT开启,则会发出通知 Strict standards: Only variables should be passed by reference

答案 5 :(得分:2)

这可以在PHP 5.4中实现,但是现在你必须使用一些替代语法。

例如:

list($first) = explode('.','hello.world.!');
echo $first;

答案 6 :(得分:1)

不,不可能。 PHP不像javascript那样工作。

答案 7 :(得分:1)

不,这是不可能的。我之前有类似的问题,但它不是