我编写了一个函数,将数组值向左移动一个索引。它看起来像这样:
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
表明数组未被修改。看起来该功能可以正常工作,但它不会修改数组。也许我应该在某处使用 &
?
答案 0 :(得分:3)
您正在传递数组。如果要修改数组本身,则需要将引用传递给数组:
function index_shift(&$array, $index){
$n = count($array) - 1;
for($i = $n; $i >= $index; $i --){
$array[$i + 1] = $array[$i];
}
print_r($array);
}
以下是使用&amp ;: http://php.net/manual/en/language.references.pass.php
传递引用的链接答案 1 :(得分:1)
或者,您可以将数组值返回给函数调用:
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);