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

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-13 08:39:10388浏览

How to Filter an Associative Array in PHP Based on Keys from an Indexed Array?

根据索引数组中的键过滤关联数组

在 PHP 中,array_filter() 提供了一种基于索引数组中的键过滤关联数组的便捷方法关于他们的价值观。然而,该函数只考虑值,让程序员寻找一种根据一组允许的值来过滤键的方法。这个问题解决了这个挑战。

给定一个关联数组 ($my_array) 和一个允许键的索引数组 ($allowed),任务是从 $my_array 中删除 $allowed 中不存在的所有键。所需的输出是一个 $my_array,仅包含在 $allowed 中找到键的键值对。

解决方案:

答案建议使用两个数组操作函数:

  • array_intersect_key(): 此函数执行使用两个数组的键进行比较。它返回一个仅包含两个数组中都存在的键的新数组。
  • array_flip(): 此函数翻转关联数组的键和值,有效地将其键转换为值并反之亦然。

结合这两个函数,您可以将关联数组过滤为如下所示:

$filtered_array = array_intersect_key($my_array, array_flip($allowed));

这里, array_flip($allowed) 创建一个新数组,其中 $allowed 中的值成为键,而键成为值。 array_intersect_key($my_array, ...) 然后将 $my_array 与翻转后的数组进行比较,返回一个仅包含允许的键作为键及其关联值的数组。

示例:

使用提供的示例:

$my_array = array("foo" => 1, "hello" => "world");
$allowed = array("foo", "bar");

生成的 $filtered_array 将是:

array("foo" => 1);

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn