索引返回数组的最有效方法是什么?

时间:2008-10-05 20:09:57

标签: php

function returnsAnArray ()
{
  return array ('test');
}

echo returnsAnArray ()[0];

在PHP中生成语法错误。在不将结果赋给临时变量的情况下直接从返回的数组中获取元素的最有效方法是什么?

7 个答案:

答案 0 :(得分:5)

这是一种方法,使用list语言构造

function returnsAnArray ()
{
  return array ('test');
}

list($foo)=returnsAnArray();

您可以通过将其与array_slice

组合来从偏移中获取一系列元素
list($third,$fourth,$fifth)=array_slice(returnsAnArray(), 2, 3);

答案 1 :(得分:3)

定义一个新函数,用于从数组中返回特定索引。

function arr_index($arr, $i) { return $arr[$i]; }

您可能希望在那里添加一些错误和类型检查。

然后像这样使用它:

echo arr_index(returnsAnArray(), 0);

快乐编码:)

答案 2 :(得分:1)

如果数组中只有一个成员,这将有效:

 <?php
 echo current(returnsAnArray());
 ?>

答案 3 :(得分:1)

另一种选择:

<?php
echo reset(functionThatReturnsAnArray());
?>

类似帖子:PHP: Can I reference a single member of an array that is returned by a function?

答案 4 :(得分:1)

对于常规的数字索引数组,func()返回这样的数组,$ n是你想要的索引:

array_pop(array_slice(func(),$n,1));

对于关联数组(例如字符串或其他东西作为键),或未编号且从0..n完成的数字数组,它有点复杂。其中$ key是你想要的钥匙:

array_pop(array_intersect_keys(func(),Array($key => ""));

这也适用于第一种情况。

答案 5 :(得分:0)

您可以为未知长度的索引数组执行此操作。

foreach ( returnsAnArray() as $item )
  echo $item;

答案 6 :(得分:-1)

我问自己为什么要避免为返回的数组创建临时变量。为什么不直接返回一个值而不是整个数组?也许你必须过度思考你的程序逻辑。

或者是性能/内存问题?考虑使用references而不是始终创建新的数组对象并将其返回。

相关问题