Ярлык для: $ foo = explode ("", "bla ble bli"); echo $ foo

есть ли способ получить n-й элемент разделенной строки без использования переменной?

Мой PHP-код всегда выглядит так:

$foo = explode(" ", "bla ble bli"); echo $foo[0]; 

Есть ли более короткий способ, возможно, в Python?

 print "bla ble bli".split(" ")[0] 

Заранее спасибо.

Solutions Collecting From Web of "Ярлык для: $ foo = explode ("", "bla ble bli"); echo $ foo"

Это то, что люди должны использовать вместо того, чтобы explode большую часть времени:

 $foo = strtok("bla ble bli", " "); 

Он отсекает первую часть строки до первого " " .

Если вы не можете отпустить взорваться, то ближайшая идиома для выполнения [0] как в Python, такова:

 $foo = current(explode(...)); 

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

 $foo = current(array_slice(explode(...), 2)); // element [2] 

(Не совсем ответ – другие ответили довольно хорошо)

Это одна из функций, которые должны появиться с одной из следующих версий PHP (возможно, PHP 5.4) .

Дополнительные сведения см. В разделе « Возможности в PHP-сундуке»: разыменование разметки – цитирование одного из приведенных примеров:

 <?php function foo() { return array(1, 2, 3); } echo foo()[2]; // prints 3 ?> 

попробуй это:

его одна строка:

 <?php echo (($f=explode(" ", "bla ble bli"))?$f[0]:''); ?> 

результат здесь: http://codepad.org/tnhbpYdd

Почему бы просто не делать:

 function splode($string, $delimiter, $index){ $r = explode($delimiter, $string); return $r[$index]; } 

Я использую такие функции, как ходжион.

С одним выражением я могу думать:

 echo list($a) = explode(' ', 'ab c') ? $a : ''; echo list($_, $b) = explode(' ', 'ab c') ? $b : ''; 

Не настолько, насколько я знаю, хотя вы можете определить функцию и использовать ее.

 function firstWord($string) { $foo = explode(" ", $string); return $string; } 

Я не знаю, как сделать то, что вы хотите, хотя я хотел сделать то же самое много раз раньше. В этом конкретном случае вы могли бы сделать

 $bar = substr($foo, 0, strpos($foo, " ")); 

который останавливается там, где есть одна дополнительная переменная, но не совсем то, что вы хотели.

Следующее, пожалуй, самый чистый способ, которым я могу думать, делать то, что запросил ОП. Он определяет функцию, но нет переменных ее собственных, и она выполнит свою работу практически для любой ситуации:

function at(&$arr, &$pos) { return $arr[$pos]; }

Пример использования:

echo at( explode('|', 'a|b|c|d'), 1 ); // Outputs 'b'

Функция представляет собой одну строку кода и не будет затруднена для фиксации памяти. Если вы используете его только один раз, вы можете определить его в локальной области, где он будет использоваться для минимизации беспорядка кода.
В качестве небольшого дополнительного преимущества, поскольку функция не выполняет никаких проверок на $arr или $pos , она будет вызывать все те же ошибки, что и в случае, если вы попытаетесь получить доступ к несуществующему индексу для массива или даже вернете символов в строке или элементах в парном массиве значений ключа.

Закрыть. правая дорожка делает функцию или метод для чего-то, что повторяется.

 function extract_word($input, $index) { $input = explode(' ', $input); return $input[$index]; } 

добавьте третий аргумент $ separater = '', если у вас могут быть разные разделители слов.