有人可以帮我弄清楚为什么我这个函数出现语法错误:
function removeFromArray(&$array, $key){
foreach($array as $j=>$i){
if($i == $key){
$array = array_values(unset($array[$j])); //error on this line says expected ;
return true;
break;
}
}
}
最值得赞赏的任何帮助!
Jonesy
答案 0 :(得分:4)
删除array_values
。您似乎只想删除一个值,unset
已经在执行此任务:
function removeFromArray(&$array, $key){
foreach($array as $j=>$i){
if($i == $key){
unset($array[$j]);
return true;
}
}
}
旁注:
return
之后的代码不再执行,因此break
是不必要的。 $key
在这里是一个误导性的变量名称。更好的是$value
。更新:如果您想重新索引数组的值(如果您有数字数组),则必须分两步完成(如{ {1}}不返回值):
unset
答案 1 :(得分:2)
您是否尝试在array_values中使用unset函数?你期待在这里发生什么?
你应该可以使用: 未设置($阵列[$ J]);
当你通过引用传递数组时,这应该足以删除它。无需使用数组值。
答案 2 :(得分:2)
问题是未解决的问题。 array_values期望数组作为参数,但unset没有任何返回值。
答案 3 :(得分:1)
我知道你要做什么,我建议你改用它:
function removeFromArray(&$array, $key){
foreach($array as $j=>$i){
if($i == $key){
unset($array[$j]);
}
}
}
您实际上不需要返回任何内容。 unset
是一个无效函数。
答案 4 :(得分:0)
取消设置不会返回任何内容:
void unset ( mixed $var [, mixed $var [, mixed $... ]] )