2010-11-09 75 views
0

有人可以帮助我弄清楚为什么我得到一个语法错误使用此项功能:PHP:语法错误帮助预期;

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

的错误是不同的:*解析错误:语法错误,意想不到的T_UNSET,预计“)” * – 2010-11-09 11:36:37

+0

会很高兴地看到确切的错误信息...... – oezi 2010-11-09 11:37:50

+2

'return true' _and_'break'?这对我没有意义。 – jwueller 2010-11-09 11:40:00

回答

4

删除array_values。看来你只是想删除一个值,unset已经做的工作​​:

function removeFromArray(&$array, $key){ 
    foreach($array as $j=>$i){ 
     if($i == $key){ 
      unset($array[$j]); 
      return true; 
     } 
    } 
} 

More about unset

Demo


旁注:

  • 的代码return后不再执行,因此break是不必要的。
  • $key这里是一个误导性的变量名称。更好的是$value

更新:如果你想重新索引阵列的值(如果你有一个数字阵列),你必须做的两个步骤(如unset不返回值):

unset($array[$j]); 
$array = array_values($array); 

Demo

+0

我会添加这个小例子:http://codepad.org/AXX7g8rb – Shikiryu 2010-11-09 11:49:26

2

你试图使用array_values里面的unset函数吗?你到底想要在这里发生什么?

您应该可以使用: unset($ array [$ j]);

正如你通过引用传递数组,这应该足以将其删除。不需要玩数组值。

2

问题是未设置。 array_values期望一个数组作为参数,但unset没有任何返回值。

1

我看到你想要做什么,我建议你用这个来代替:

function removeFromArray(&$array, $key){ 
     foreach($array as $j=>$i){ 
      if($i == $key){ 
       unset($array[$j]); 
      } 
     } 
} 

你实际上不需要返回任何东西。 unset是一个无效函数。

0

取消设置不返回任何内容:

void unset (mixed $var [, mixed $var [, mixed $... ]])