2015-10-25 120 views
-2

在PHP中:如何從數組中刪除/刪除密鑰?PHP:如何從數組中刪除/刪除密鑰

在我的PHP腳本中,我處理輸入表單的值。如果某個值不符合某個條件,則創建一個數組來存儲該值。稍後在腳本中,如果值滿足第二個條件,那麼我想從數組中除去鍵和值。我想刪除鍵的原因除了它保存的值之外,是因爲如果數組中有任何/另一個鍵,那麼我會將該數組傳遞給一個函數,該函數將處理該數組中的每個鍵和值。

我試過unset()這對我不起作用,因爲它只是取消了密鑰的值,而不是密鑰本身。

我想創建另一個數組,只包含不符合第二個條件的值,但我不想這樣做,如果我可以刪除數組中的特定鍵。

這裏是我的腳本的一個片段:

foreach($_POST as $field => $value) 
{ 
    if($field == "HiddenConditionsEditProcess") 
    { 
     if(is_numeric($value)) 
     { 
      $GoodData[$field] = $value; 
     } 
    } 
    elseif(
    ($field == "NameSanskrit") 
    || 
    ($field == "NameWestern")) 
    { 
     if(!(preg_match("[[a-zA-z +'-]+]",$value))) 
     { 
      $ErrorArray[] = $field; 

      $GoodData[$field] = strip_tags(trim($value)); 
     } 
     else 
     { 
      $GoodData[$field] = mysqli_real_escape_string($mysqli, strip_tags(trim($value))); 
     } 
    } 
} 

if(
(isset($ErrorArray['NameSanskrit'])) 
&& 
(!(isset($ErrorArray['NameWestern'])))) 
{ 
    unset($ErrorArray['NameSanskrit']); 
} 

DisplayError($GoodData, $ErrorArray, "ConditionsEdit.php"); 
+0

更多具體的例子。 – fico7489

+1

我想你錯了。 unset()破壞數組元素,這意味着沒有鍵或值。 – xReprisal

+0

@ArekGorecki。你是對的,我誤解了unset()的行爲,因此濫用了它。問題解決了 – Arya

回答

2

unset() - 做你希望它做的事情,那就是整體刪除元素,鍵和值。

<?php 
 
function foo() 
 
{ 
 
    unset($GLOBALS['bar']); 
 
} 
 

 
$bar = "something"; 
 
foo(); 
 
?>

基於腳本的$ ErrorArray從來沒有得到一個關鍵的 「NameSanskrit」 這你想取消設置。因爲您正在執行此$ ErrorArray [] < - 您的密鑰將是數字。