0

我编写了一个函数,将数组值向左移动一个索引。它看起来像这样:

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函数外的第二个显示数组没有被修改。似乎该函数可以正常工作,但它不会修改数组。也许我应该在&某个地方使用?

4

2 回答 2

3

您正在传递一个数组。如果要修改数组本身,则需要将引用传递给数组:

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

于 2013-06-20T23:08:35.753 回答
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);
于 2013-06-20T23:10:36.393 回答