PHP传递没有选定索引的数组

时间:2013-12-10 17:11:15

标签: php arrays

如何切片数组以将其传递给函数。我不能使用unset,因为我需要进一步的数组。我知道我可以将整个数组复制到变量,但是它非常大而且效率不高。我的代码:

$list = array(0=>2123, 2=>1231, 7=>123123,...);
unset($list[0]); //I can't do this because I still need whole $list
$seats = $allocatingClass->allocateSeats($seatsNumber, $list); //here I need to slice $key from $list and pass $list without reiterating

2 个答案:

答案 0 :(得分:4)

如果您需要保留索引0,请将其存储,而不是将整个阵列存储在其他位置:

$tmp = $list[0];

然后拼接数组:

$list = array_splice($list,1,count($list));

然后将其传递给您的函数:

$seats = $allocatingClass->allocateSeats($seatsNumber, $list);

然后,当您需要它时,将值放回到数组中:

$list[] = $tmp;

编辑:如果您确实需要将其精确地放在索引0处,那么您可能希望取消设置数组的索引0而不是拼接它。但是,如果你可以在数组末尾推送它,请按照上面的说明进行操作。

要清除,如果您需要将元素推回到索引0,请执行

unset($list[0]);

而不是拼接...

要放回元素,请执行:

$list[0] = $tmp;

答案 1 :(得分:1)

但是你这样做,传递数组时会复制一个副本(除非你通过引用传递它)。

要么使用拼接。或创建副本并移动一个值。

发送复制变量后,您可以取消设置,以便它不会保留其空间。

编辑:

上述解决方案也是可行的。虽然我建议你使用:

$tmp = array_shift($arr);
doStuf($arr);
array_unshift($arr, $tmp);