2010-11-09 46 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 $... ]])