2013-10-16 41 views
0

例如:如何在不分配數組變量的情況下訪問數組元素?

echo explode('@',$var); //but only echoing element 1 or 2 of the array? 

相反的:

$variable = explode('@',$var); 
echo $variable[0]; 

謝謝。

+0

的downvoter能解釋一下自己? –

+0

爆炸將字符串轉換爲數組。如何訪問數組元素,而它是一個字符串? –

+0

我確實試圖解決這個問題,但無濟於事。我有大約6個月的PHP使用經驗,而且我沒有看到如何解決這個問題。 – OBV

回答

6

自PHP 5.4,你可以寫:

echo explode('@', $var)[0]; 

在之前版本的PHP只能實現詭計的行爲:

echo current(explode('@', $var)); // get [0] 
echo next(explode('@', $var)); // get [1] 

如果沒有臨時變體,則無法在任意位置追加元素能夠。


下面是一個簡單的功能,可以整理你的代碼,如果你不希望使用一個變量每次:

function GetAt($arr, $key = 0) 
{ 
    return $arr[$key]; 
} 

調用,比如:

echo GetAt(explode('@', $var)); // get [0] 
echo GetAt(explode('@', $var), 1); // get [1] 
+3

從技術上講,這是可能的,你可以'echo current(explode('@',$ var));'' – MLeFevre

+0

做那些相同的技巧在<5.4以及?我正在尋找一個通用的解決方案,而不必擔心兼容性問題 – OBV

+0

@OBV是的,此行爲在5.4和更高版本中應該仍然有效。最安全的賭注可能是一個臨時變量。 –

0

只需使用reset這樣

echo reset(explode('@', $var)); 
+0

'致命錯誤:只有變量可以通過引用傳遞? – BlitZ

+0

我之前做過測試發佈......它的作品爲我找到了!'退出(重置(爆炸(' - ','it-is-my-test')));' – JoDev

7

在PHP版本可以使用以下語法:

echo explode('@', $var)[0]; 

如果沒有,你可以使用list()

list($foo) = explode('@', $var); 

上面的語句將在變量$foo分配爆炸數組的第一個值。

1

上到PHP 5.4,你可以這樣做:

echo array_shift(explode('@', $var)); 

這將呼應爆炸創建數組的第一個元素。但它沒有錯誤檢查爆炸的輸出,這是不理想的。

1

list可以像這樣使用,以及:

list($first) = explode('@', $var); 
list(,$second) = explode('@', $var); 
list(,,$third) = explode('@', $var); 
相關問題