2014-10-02 87 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)