2014-10-02 82 views
1

可以說我有一個由字符串分隔的字符串;從php中獲取爆炸值

$something = "dog;cat;horse;fish"; 

我知道我可以很容易地爆發,並從爆炸陣列獲得相應的值:

$explode = explode(";",$something); 

$explode[1]是貓。

有沒有辦法我可以做到這一點內聯呢?我的意思是這樣的:

$favoritePet = explode(";",$something)[1]; 

$favoritePet就等於貓

顯然,上面是錯的,但我希望這說明了什麼,我想要知道的,爆炸,同時獲得價值。

+2

雖然這是PHP 5.4+的特點,想想它如何影響你的代碼的可讀性。對我來說,在這種情況下,額外的一行代碼增加了可讀性。 – 2014-10-02 14:59:36

+0

http://schlueters.de/blog/archives/138-Features-in-PHP-trunk-Array-dereferencing.html – 2014-10-02 15:00:32

回答

9

這就是所謂的數組語法,可以在PHP 5.4+

0

據數組語法可以做,我做

$favoritePet = explode(";",$something)[1]; 

希望它會在「貓」返回$ favoritePet變量在PHP 5.4+

在之前版本的PHP,你可以這樣做:

echo current(explode(";",$something)); // get [0] 
    echo next(explode(";",$something)); // get [1] 

或者您可以編寫自己的函數來得到它在同一行,像下面

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

而調用這個函數像

echo GetValueAt(explode(';', $something)); // get [0] 
    echo GetValueAt(explode(';', $something), 1); // get [1] 
0

這裏是PHP 5.4更改日誌的鏈接。請查看第三行,它說:

已添加函數數組解引用,例如, FOO()[0]。

另外,你可以創建一個簡單的函數,爲你做同樣的事情。

function r($array, $key){ 
    return (isset($array[$key])) ? $array[$key] : false; 
} 

而得到的結果是這樣的:

$a = explode(...); 
    echo r($a, 1)