我编写了一个函数,将数组值向左移动一个索引。它看起来像这样:
function index_shift($array, $index){
$n = count($array) - 1;
for($i = $n; $i >= $index; $i --){
$array[$i + 1] = $array[$i];
}
print_r($array);
}
$array_one = array("a","b","c","d","e","f","g");
index_shift($array_one, 3);
echo "<br />";
print_r($array_one);
我将第一个print_r
插入到函数中,看看它是否工作。它显示值已经向左移动了(d
在第4和第5个索引上,所有的值都被移动了)。但是函数外的第二个print_r
显示数组没有被修改。似乎函数工作,因为它必须,但它不修改数组。也许我应该在某个地方使用 &
?
您正在传递一个数组。如果要修改数组本身,则需要将引用传递给数组:
function index_shift(&$array, $index){
$n = count($array) - 1;
for($i = $n; $i >= $index; $i --){
$array[$i + 1] = $array[$i];
}
print_r($array);
}
这里有一个关于使用&: http://php.net/manual/en/language.references.pass.php传递引用的链接
或者,您可以将数组值返回给函数调用:
function index_shift($array, $index){
$n = count($array) - 1;
for($i = $n; $i >= $index; $i --){
$array[$i + 1] = $array[$i];
}
return $array;
}
$array_one = array("a","b","c","d","e","f","g");
$array_two=index_shift($array_one, 3);
echo "<br />";
print_r($array_one);
print_r($array_two);