PHP: 如何 delete/remove 数组中的一个键
PHP: how to delete/remove a key from an array
在 PHP 中:如何 delete/remove 数组中的键?
在我的 PHP 脚本中,我处理输入表单的值。如果一个值不满足某个条件,那么我创建一个数组来存储该值。稍后在脚本中,如果该值满足第二个条件,那么我想从数组中删除键和值。我想删除键的原因,除了它保存的值之外,是因为如果数组中有 any/another 键,那么我会将数组传递给一个函数,该函数将处理每个键和值那个数组。
我试过 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");
unset() - 完全符合您的预期,即删除整个元素、键和值。
<?php
function foo()
{
unset($GLOBALS['bar']);
}
$bar = "something";
foo();
?>
根据您的脚本,$ErrorArray 永远不会获得您试图取消设置的密钥 "NameSanskrit"。因为你正在这样做 $ErrorArray[] <-- 你的密钥将是数字。
在 PHP 中:如何 delete/remove 数组中的键?
在我的 PHP 脚本中,我处理输入表单的值。如果一个值不满足某个条件,那么我创建一个数组来存储该值。稍后在脚本中,如果该值满足第二个条件,那么我想从数组中删除键和值。我想删除键的原因,除了它保存的值之外,是因为如果数组中有 any/another 键,那么我会将数组传递给一个函数,该函数将处理每个键和值那个数组。
我试过 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");
unset() - 完全符合您的预期,即删除整个元素、键和值。
<?php
function foo()
{
unset($GLOBALS['bar']);
}
$bar = "something";
foo();
?>
根据您的脚本,$ErrorArray 永远不会获得您试图取消设置的密钥 "NameSanskrit"。因为你正在这样做 $ErrorArray[] <-- 你的密钥将是数字。