有没有办法在不使用变量的情况下获取分割字符串的第n个元素?
我的PHP代码总是如下所示:
$foo = explode(" ", "bla ble bli");
echo $foo[0];
在Python中是否有更短的方式?
print "bla ble bli".split(" ")[0]
提前致谢。
答案 0 :(得分:11)
这是人们应该在大多数时间使用而不是explode
:
$foo = strtok("bla ble bli", " ");
它会切断第一个字符串部分,直到第一个" "
。
如果你不能放弃爆炸,那么在Python中完成[0]
的最接近的习语就是:
$foo = current(explode(...));
如果它不仅仅是第一个元素,那么它会变得更加麻烦:
$foo = current(array_slice(explode(...), 2)); // element [2]
答案 1 :(得分:2)
(本身并不是真正的答案 - 其他人确实回答得很好)
这是下一版本的PHP (PHP 5.4,可能)之一应该带来的功能之一。
有关更多信息,请参阅Features in PHP trunk: Array dereferencing - 引用其中一个给定示例:
<?php
function foo() {
return array(1, 2, 3);
}
echo foo()[2]; // prints 3
?>
答案 2 :(得分:1)
试试这个:
一行:
<?php
echo (($f=explode(" ", "bla ble bli"))?$f[0]:'');
?>
结果在这里: http://codepad.org/tnhbpYdd
答案 3 :(得分:1)
为什么不这样做:
function splode($string, $delimiter, $index){
$r = explode($delimiter, $string);
return $r[$index];
}
我使用像这样的大量小功能。
答案 4 :(得分:0)
我只能想到一个表达式:
echo list($a) = explode(' ', 'a b c') ? $a : '';
echo list($_, $b) = explode(' ', 'a b c') ? $b : '';
答案 5 :(得分:0)
虽然你可以定义一个函数并使用它,但据我所知。
function firstWord($string) {
$foo = explode(" ", $string);
return $string;
}
答案 6 :(得分:0)
我不知道如何做你想做的事情,即使我以前想过多次做同样的事情。对于特定情况,你可以做
$bar = substr($foo, 0, strpos($foo, " "));
停止有一个额外的变量,但不完全是你想要的。
答案 7 :(得分:0)
以下可能是我考虑做OP所要求的最干净的方式。它定义了一个函数,但没有自己的变量,它可以完成任何情况下的工作:
function at(&$arr, &$pos) { return $arr[$pos]; }
使用示例:
echo at( explode('|', 'a|b|c|d'), 1 ); // Outputs 'b'
该函数是一行代码,并且不难提交到内存。如果您只使用一次,则可以在本地范围内定义它,以最大限度地减少代码混乱。
作为一个轻微的额外好处,因为该函数不对$arr
或$pos
进行检查,它将抛出所有相同的错误,如果您尝试访问数组的不存在的索引,或者甚至会返回字符串中的单个字符或键值配对数组中的项目。
答案 8 :(得分:0)
接近。正确的轨道正在为重复的事物制定功能或方法。
function extract_word($input, $index) {
$input = explode(' ', $input);
return $input[$index];
}
如果您可能有不同的单词分隔符,请添加$ separater =''的第三个参数。