php 取消设置多个数组元素的更好方法

1szpjjfi  于 2023-01-29  发布在  PHP
关注(0)|答案(6)|浏览(131)

这里的交易是,我有一个有17个元素的数组。我想得到我在某一时间内需要的元素,并将它们从数组中永久删除。
下面是代码:

$name = $post['name'];
$email = $post['email'];
$address = $post['address'];
$telephone = $post['telephone'];
$country = $post['country'];

unset($post['name']);
unset($post['email']);
unset($post['address']);
unset($post['telephone']);
unset($post['country']);

是的,代码是丑陋的,没有必要抨击。我如何使它看起来更好?

hi3rlvi2

hi3rlvi21#

使用array_diff_key删除

$remove = ['telephone', 'country'];

$remaining = array_diff_key($post, array_flip($remove));

如果您想提供一个要保留的键数组,可以使用array_intersect_key

bvuwiixz

bvuwiixz2#

看起来extract()函数是一个更好的工具来完成你要做的事情(假设它从数组中提取所有的键/值,并将它们赋给与局部作用域中的键同名的变量),在提取了内容之后,你可以取消设置整个$post,假设它不包含任何你想要的东西。
然而,要真正回答您的问题,您可以创建一个要删除的键的数组并循环,显式地取消设置它们...

$removeKeys = array('name', 'email');

foreach($removeKeys as $key) {
   unset($arr[$key]);
}

...或者您可以将变量指向已删除键的新数组...

$arr = array_diff_key($arr, array_flip($removeKeys));

...或将所有数组成员传递给unset()...

unset($arr['name'],  $arr['email']);
pes8fvy9

pes8fvy93#

还有另一种方法比上面的例子更好。http://php.net/manual/en/function.unset.php
不用遍历整个数组并取消设置所有键,只需取消设置一次即可,如下所示:
阵列示例:

$array = array("key1", "key2", "key3");

对于整个阵列:

unset($array);

对于唯一键:

unset($array["key1"]);

对于一个数组中的多个键:

unset($array["key1"], $array["key2"], $array["key3"] ....) and so on.

我希望这对你的发展有帮助。

pbwdgjma

pbwdgjma4#

我知道这个问题很老了,但我认为最佳的方法可能是这样做:

$vars = array('name', 'email', 'address', 'phone'); /* needed variables */
foreach ($vars as $var) {
    ${$var} = $_POST[$var]; /* create variable on-the-fly */
    unset($_POST[$var]); /* unset variable after use */
}

现在,你可以从任何地方使用$name,$email,...;)
注意:extract()是不安全的,所以它完全没有问题!

qxgroojn

qxgroojn5#

<?php
   $name = $post['name'];
   $email = $post['email'];
   $address = $post['address'];
   $telephone = $post['telephone'];
   $country = $post['country'];


   
   $myArray = array_except($post, ['name', 'email','address','telephone','country']);
   
  print_r($myArray);
  
  
   
  function array_except($array, $keys){
    foreach($keys as $key){
        unset($array[$key]);
    }
    return $array;
  }
?>
7gyucuyw

7gyucuyw6#

在php中unset函数可以有多个参数

$test = ['test1' => 1, 'test2' => 4, 'test34' => 34];

unset($test['test1'], $test['test34']);

以下是文档中的描述

unset(mixed $var, mixed ...$vars): void

相关问题