2014-10-02 3 views
1

Допустим, у меня есть строка, ограниченная символом;Получение значения взрыва с php

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

Я знаю, что я могу легко взорвать его и получить соответствующее значение из взорванного массива:

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

$explode[1] бы кошка.

Есть ли способ, которым я могу сделать это в любом случае? с тем, что я имею в виду что-то вроде:

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

$favoritePet равнялось бы кошка

Очевидно, что выше неправильно, но я надеюсь, что это показывает, что я пытаюсь получить в, взрываются и получить значение в то же время ,

+2

Хотя это особенность PHP 5.4+, подумайте о том, как это влияет на читаемость кода. Для меня в таком случае дополнительная строка кода добавляет читаемость. –

+0

http://schlueters.de/blog/archives/138-Features-in-PHP-trunk-Array-dereferencing.html –

ответ

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) 
Смежные вопросы