首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >取消设置多个数组元素的更好方法

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

Stack Overflow用户
提问于 2011-10-25 13:19:05
回答 5查看 87.7K关注 0票数 96

这里的问题是,我有一个包含17个元素的数组。我希望在一段时间内获得所需的元素,并将它们从数组中永久删除。

代码如下:

代码语言:javascript
复制
$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']);

是的,代码是丑陋的,没有必要大肆抨击。我怎样才能让它看起来更好?

EN

回答 5

Stack Overflow用户

发布于 2015-11-19 18:14:00

使用array_diff_key删除

代码语言:javascript
复制
$remove = ['telephone', 'country'];

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

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

票数 138
EN

Stack Overflow用户

发布于 2011-10-25 13:20:26

对于您正在尝试做的事情,函数extract()似乎是一个更好的工具(假设它从一个数组中提取所有键/值,并将它们赋给与本地作用域中的键同名的变量)。在提取了内容之后,可以取消设置整个$post,假设它不包含任何其他您想要的内容。

但是,为了实际回答您的问题,您可以创建一个包含要删除和循环的键的数组,显式取消设置它们...

代码语言:javascript
复制
$removeKeys = array('name', 'email');

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

...or你可以将变量指向一个删除了键的新数组...

代码语言:javascript
复制
$arr = array_diff_key($arr, array_flip($removeKeys));

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

代码语言:javascript
复制
unset($arr['name'],  $arr['email']);
票数 104
EN

Stack Overflow用户

发布于 2014-08-01 16:25:51

还有另一种方法比上面的例子更好。来源:http://php.net/manual/en/function.unset.php

而不是遍历整个数组并取消设置其所有键,只需取消设置一次,如下所示:

示例数组:

代码语言:javascript
复制
$array = array("key1", "key2", "key3");

对于整个阵列:

代码语言:javascript
复制
unset($array);

对于唯一键:

代码语言:javascript
复制
unset($array["key1"]);

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

代码语言:javascript
复制
unset($array["key1"], $array["key2"], $array["key3"] ....) and so on.

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

票数 53
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7884991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档