我正在编码,我偶然发现了这一点。为什么这段代码不起作用?
function remove($array,$key) {
unset($array[$key]);
}
function finished() {
$finished = array(1,2,3,4,5);
remove($finished,3);
return $finished;
}
答案 0 :(得分: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;
}
答案 1 :(得分:1)
您需要从函数返回数组,因为 not 会影响全局范围内的数组。
function remove($array,$key) {
unset($array[$key]); // $array is only changed inside the function
return $array;
}
$array = remove($array, 'key'); // now $array is changed
答案 2 :(得分:0)
使用&
function remove(&$array,$key) {
unset($array[$key]);
}