首页 > 后端开发 > php教程 > 如何在 PHP 中根据索引数组值过滤关联数组键?

如何在 PHP 中根据索引数组值过滤关联数组键?

DDD
发布: 2024-12-13 11:52:10
原创
756 人浏览过

How Can I Filter Associative Array Keys Based on Indexed Array Values in PHP?

根据索引数组值过滤关联数组键

许多程序员都会遇到基于特定条件有选择地从关联数组中过滤掉键的挑战值存储在索引数组中。在 PHP 中,array_filter() 回调函数仅提供对数组值的访问,而忽略了键匹配功能。

考虑以下场景,其中 $my_array 包含键值对:

$my_array = ["foo" => 1, "hello" => "world"];
登录后复制

$allowed 是一个带有允许的键的简单索引数组:

$allowed = ["foo", "bar"];
登录后复制

目标是修改 $my_array 使得它只包含 $allowed 中也存在的键。所需的输出是:

$my_array = ["foo" => 1];
登录后复制

要实现此目的,我们可以利用 array_intersect_key() 和 array_flip() 函数:

var_dump(array_intersect_key($my_array, array_flip($allowed)));
登录后复制

解释:

  • **array_flip($allowed)**:反转$allowed 的键和值,将其转换为关联数组,其中原始键变为值,反之亦然。这允许我们将 $my_array 中的键与翻转数组中的值进行比较。
  • array_intersect_key($my_array, $reversed):将 $my_array 的键与翻转的 $allowed 数组相交。这仅保留 $my_array 中作为翻转数组中的值出现的键,有效地过滤掉不需要的键。

通过组合这些函数,我们可以根据值有选择地从关联数组中删除键在索引数组中,无需手动迭代键并比较它们。

以上是如何在 PHP 中根据索引数组值过滤关联数组键?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板