,而不是這樣做:
$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