而不是这样做:
$s=explode('.','hello.world.!');
echo $s[0]; //hello
我想做这样的事情:
echo explode('.','hello.world.!')[0];
但是在PHP中不起作用,该怎么做?可能吗?谢谢。
答案 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)
答案 7 :(得分:1)
不,这是不可能的。我之前有类似的问题,但它不是