2013-10-16 42 views
0

例如:如何在不分配数组变量的情况下访问数组元素?

echo explode('@',$var); //but only echoing element 1 or 2 of the array? 

相反的:

$variable = explode('@',$var); 
echo $variable[0]; 

谢谢。

+0

的downvoter能解释一下自己? –

+0

爆炸将字符串转换为数组。如何访问数组元素,而它是一个字符串? –

+0

我确实试图解决这个问题,但无济于事。我有大约6个月的PHP使用经验,而且我没有看到如何解决这个问题。 – OBV

回答

6

自PHP 5.4,你可以写:

echo explode('@', $var)[0]; 

在之前版本的PHP只能实现诡计的行为:

echo current(explode('@', $var)); // get [0] 
echo next(explode('@', $var)); // get [1] 

如果没有临时变体,则无法在任意位置追加元素能够。


下面是一个简单的功能,可以整理你的代码,如果你不希望使用一个变量每次:

function GetAt($arr, $key = 0) 
{ 
    return $arr[$key]; 
} 

调用,比如:

echo GetAt(explode('@', $var)); // get [0] 
echo GetAt(explode('@', $var), 1); // get [1] 
+3

从技术上讲,这是可能的,你可以'echo current(explode('@',$ var));'' – MLeFevre

+0

做那些相同的技巧在<5.4以及?我正在寻找一个通用的解决方案,而不必担心兼容性问题 – OBV

+0

@OBV是的,此行为在5.4和更高版本中应该仍然有效。最安全的赌注可能是一个临时变量。 –

0

只需使用reset这样

echo reset(explode('@', $var)); 
+0

'致命错误:只有变量可以通过引用传递? – BlitZ

+0

我之前做过测试发布......它的作品为我找到了!'退出(重置(爆炸(' - ','it-is-my-test')));' – JoDev

7

在PHP版本可以使用以下语法:

echo explode('@', $var)[0]; 

如果没有,你可以使用list()

list($foo) = explode('@', $var); 

上面的语句将在变量$foo分配爆炸数组的第一个值。

1

上到PHP 5.4,你可以这样做:

echo array_shift(explode('@', $var)); 

这将呼应爆炸创建数组的第一个元素。但它没有错误检查爆炸的输出,这是不理想的。

1

list可以像这样使用,以及:

list($first) = explode('@', $var); 
list(,$second) = explode('@', $var); 
list(,,$third) = explode('@', $var); 
相关问题