2011-08-28 67 views

回答

3

隨着oneliners說,你必須等待數組語法得到支持。現在常見的解決方法是爲該d($array,0)定義一個輔助函數。

在你的情況下,你可能不應該首先使用愚蠢的explode。 PHP中有更合適的字符串函數。如果你只想要第一部分:

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

不可能。 PHP不能像JavaScript一樣工作。

1

不,這是不可能的。我之前有過類似的問題,但它不是

+0

不可能是什麼;) – JonnyReeves

3

目前沒有,但你可以編寫一個函數用於此目的:

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

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

雖然這是不可能的,你在技術上可以做到這一點,以獲取0元:

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

這將引發一個通知,如果錯誤報告E_STRICT上:
Strict standards: Only variables should be passed by reference

+1

可以使用'echo current(explode('。','hello.world。!' ));'不會引發E_STRICT消息。 – Gordon

+0

我從來沒有真正使用'current()'和'end()'函數,但我可能應該再次查看它們。 – afuzzyllama

+0

足夠有趣,end()確實會提升E_STRICT – Gordon

2

這將是可能的在PHP 5.4,但現在你將不得不使用一些替代語法。

例如:

list($first) = explode('.','hello.world.!'); 
echo $first; 
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()很臭,因爲它會分配第二陣列是一種浪費。

+0

+1,因爲它能夠訪問第n個元素。我從來沒有想過這樣做! – afuzzyllama

+0

does current()與非變量一起工作嗎? – arnaud576875

+1

以上代碼在CLI上由PHP 5.3.6成功執行。 – JonnyReeves