php - 查找一个多维数组中的所有元素是否存在于另一个中(使用多维数组作为大海捞针)
问题描述
我一直在尝试使用一些逻辑来查看多维数组(干草堆)中的所有元素是否在另一个更大的干草堆中退出。我的第一个干草堆首先来自一个 json 对象,第二个是一个“点名”字符串,它也被转换为一个数组。这里的逻辑是我可以使用一个字符串以一种简单的方式描述我在 json 中寻找的内容:
针:
Array
(
[key1] => Array
(
[provider] => Array
(
[id] => 1
)
)
[key2] => Array
(
[consumer] => Array
(
[id] => 5
)
[hostname] => foo
)
)
草垛:
[0] => Array
(
[id] => 1000
[consumer] => Array
(
[id] => 5
[name] => test
[hostname] => foo
[1] => Array
(
[id] => 1200
[provider] => Array
(
[id] => 5
[name] => test
如果指针存在于数组中,则应返回顶部键。因此,如果我们假设“key2”以下的所有键-> 值都存在于数组中,我们应该返回 key2。provider-id 和 consumer-id 不相同,可能还有其他看起来相同但路径不同的键值对。因此,如果“主机名”存在,但更深入到不匹配的数组中。
问题是我遇到的所有示例都有:
- 阵列上的固定深度。
- 把针当作绳子。
- 不是真正的多维。
有没有办法做到这一点?recursiveiteratoriterator 确实出现在我的脑海中,但基于上述内容,我不确定实际如何使用它。
我还查看了各种 in_array/is_array/array_map/array_filter 递归示例,但它们有点混乱,我无法决定是否值得尝试构建允许以一种好的方式抓取两个数组的东西。
我的数组非常大,并且包含大部分我不感兴趣的项目。但如果我能找到一种可行的方法,我相信我可以优化那部分。
谢谢阅读。
解决方案
推荐阅读
- maven - 使用 Maven 创建 Vaadin 项目时缺少 META-INF 和 WEB-INF
- splunk - Splunk Log 中的正则表达式进行搜索
- c# - C#如何通过多次停止小数移位
- reactjs - 从 NextJS 上的组件或 API 路由调用 Socket IO 实例
- javascript - 如何检查元素名称是否包含给定的字符串
- ruby - 这个 Ruby 命令行是如何工作的?看似用 Ruby 运行 CMD 脚本
- c++ - 在 OpenCV C++ 中创建空白图像
- ios - 如何为视图的所有子视图设置辅助功能标识符?
- javascript - 限制输入 Vuejs 的小数位数
- r - 如何从另一个表中查找值以填充现有表列?