快捷方式:$ foo = explode(“”,“bla ble bli”); echo $ foo [0]

时间:2011-03-30 20:22:58

标签: php shortcut explode

有没有办法在不使用变量的情况下获取分割字符串的第n个元素?

我的PHP代码总是如下所示:

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

在Python中是否有更短的方式?

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

提前致谢。

9 个答案:

答案 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 =''的第三个参数。