2014-05-19 99 views

回答

3

这是因为数组被复制(因为它是通过值传递的)。如果要更改原始变量,则需要pass by reference。请注意参数列表中的&remove。它表示该参数是按引用传递:

function remove(&$array,$key) { 
    unset($array[$key]); 
} 

function finished() { 
    $finished = array(1,2,3,4,5); 

    remove($finished, 3); 

    return $finished; 
} 

Demo

+0

很有意思,感谢传递变量的参考! – user3650808

+0

请不要将反引号用于非代码的东西。它们用于突出显示内联代码块,而不是强调:) –

+0

我经常在引用代码段时使用它们(与'&'一样)以及引用函数名时(与'remove'一样)。 – user3650808

1

您需要将阵列从你的函数中存在不影响在全球范围内的阵列改变其返回。

function remove($array,$key) { 
    unset($array[$key]); // $array is only changed inside the function 
    return $array; 
} 

$array = remove($array, 'key'); // now $array is changed 
0

使用&

function remove(&$array,$key) { 
unset($array[$key]); 
} 
相关问题