【发布时间】:2017-11-08 02:10:23
【问题描述】:
我有两个大小不同的数组,我想在两个项目相等时执行一些操作。
我的数组可能看起来像这样
array_1 = { 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' }
array_2 = { 'key2' => 'value2' }
在上面的示例中,我想在找到来自 array_1 的 key2 和来自 array_2 的 key2 时执行一个操作。
目前我正在使用 2 个 foreach 循环来执行此操作。像这样的:
foreach ($block->getSettingsNoDefaults() as $baseKey => $value) {
$found = false;
foreach ($blockData->settings as $saveKey => $value) {
if($baseKey == $saveKey) {
$found = true;
break;
}
}
if(!$found) {
$block->removeSetting($baseKey);
}
}
有没有办法使用其他更优雅的方法来执行此操作,而不是两个 foreach 循环,将一个数组中的所有值与第二个数组中的所有值进行比较,然后在它们匹配时采取行动?
我首先想到使用 php 的 array_map("myfunction",$array_1 ,$array_2) 来执行此操作,但在我的情况下它似乎不是正确的函数,因为它会循环遍历两个数组并且只比较位于相同的索引。
在我的情况下,我可以使用任何其他函数,这样我就可以使我的代码更加优雅,然后使用多个 forloops。
【问题讨论】:
-
那么,您是专门试图找出两个对象是否共享相同的键,还是仅仅比较两个对象的长度就足够了?
-
如果共享相同的密钥,如果他们这样做了就采取行动:)
标签: php