这里的问题是,我有一个包含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']);
是的,代码是丑陋的,没有必要大肆抨击。我怎样才能让它看起来更好?
发布于 2015-11-19 18:14:00
使用array_diff_key
删除
$remove = ['telephone', 'country'];
array_diff_key($post, array_flip($remove));
如果您想要提供要保留的键数组,则可以使用array_intersect_key
。
发布于 2011-10-25 13:20:26
对于您正在尝试做的事情,函数extract()
似乎是一个更好的工具(假设它从一个数组中提取所有键/值,并将它们赋给与本地作用域中的键同名的变量)。在提取了内容之后,可以取消设置整个$post
,假设它不包含任何其他您想要的内容。
但是,为了实际回答您的问题,您可以创建一个包含要删除和循环的键的数组,显式取消设置它们...
$removeKeys = array('name', 'email');
foreach($removeKeys as $key) {
unset($arr[$key]);
}
...or你可以将变量指向一个删除了键的新数组...
$arr = array_diff_key($arr, array_flip($removeKeys));
...or将所有数组成员传递给unset()
...
unset($arr['name'], $arr['email']);
发布于 2014-08-01 16:25:51
还有另一种方法比上面的例子更好。来源: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.
我希望这对你的发展有帮助。
https://stackoverflow.com/questions/7884991
复制相似问题