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

php
2022-08-30 07:27:59

这里的交易是我有一个包含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']);

是的,代码很丑,无需抨击。如何使它看起来更好?


答案 1

使用array_diff_key删除

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

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

如果要提供要保留的键数组,则可以使用array_intersect_key


答案 2

看起来函数 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']);

推荐