,而不是这样做:
$s=explode('.','hello.world.!');
echo $s[0]; //hello
我想要做这样的事情:
echo explode('.','hello.world.!')[0];
但在PHP中不起作用,该怎么办?可能吗?谢谢。
,而不是这样做:
$s=explode('.','hello.world.!');
echo $s[0]; //hello
我想要做这样的事情:
echo explode('.','hello.world.!')[0];
但在PHP中不起作用,该怎么办?可能吗?谢谢。
随着oneliners说,你必须等待数组语法得到支持。现在常见的解决方法是为该d($array,0)
定义一个辅助函数。
在你的情况下,你可能不应该首先使用愚蠢的explode
。 PHP中有更合适的字符串函数。如果你只想要第一部分:
echo strtok("hello.world.!", ".");
不可能。 PHP不能像JavaScript一样工作。
目前不是,但它在更高版本的PHP中是WILL be possible。
目前没有,但你可以编写一个函数用于此目的:
function arrayGetValue($array, $key = 0) {
return $array[$key];
}
echo arrayGetValue(explode('.','hello.world.!'), 0);
虽然这是不可能的,你在技术上可以做到这一点,以获取0元:
echo array_shift(explode('.','hello.world.!'));
这将引发一个通知,如果错误报告E_STRICT上:
Strict standards: Only variables should be passed by reference
可以使用'echo current(explode('。','hello.world。!' ));'不会引发E_STRICT消息。 – Gordon
我从来没有真正使用'current()'和'end()'函数,但我可能应该再次查看它们。 – afuzzyllama
足够有趣,end()确实会提升E_STRICT – Gordon
这将是可能的在PHP 5.4,但现在你将不得不使用一些替代语法。
例如:
list($first) = explode('.','hello.world.!');
echo $first;
这不是很漂亮;但你可以利用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()
很臭,因为它会分配第二阵列是一种浪费。
+1,因为它能够访问第n个元素。我从来没有想过这样做! – afuzzyllama
does current()与非变量一起工作吗? – arnaud576875
以上代码在CLI上由PHP 5.3.6成功执行。 – JonnyReeves
这将有可能在5.4 – DrColossos
http://codepad.viper-7.com/xunFUI – Gordon