2015-10-25 121 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 [] < - 您的密钥将是数字。