Php 循环遍历两个大小不同的数组,并找到相等的项

Php 循环遍历两个大小不同的数组,并找到相等的项,php,Php,我有两个大小不同的数组,我想在两个项相等时执行一些操作 我的数组可能是这样的 array_1 = { 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' } array_2 = { 'key2' => 'value2' } 在上面的示例中,我希望在找到来自数组_1的key2和来自数组_2的key2时执行一个操作 目前,我正在使用2个foreach循环来实现这一点。大概是这样的: foreach (

我有两个大小不同的数组,我想在两个项相等时执行一些操作

我的数组可能是这样的

array_1 = { 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' }
array_2 = { 'key2' => 'value2' }
在上面的示例中,我希望在找到来自数组_1的key2和来自数组_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的数组映射(“myfunction”、$array_1、$array_2)来实现这一点,但在我的例子中,它似乎不是正确的函数,因为它将在两个数组中循环,并且只比较位于同一索引的元素


在我的例子中,是否还有其他函数可以使用,这样我可以使代码比使用多个forloop更为冗长。

您可以使用array\u key\u exists和一个foreach循环

解决方案

$array_1 = [ 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' ];
$array_2 = [ 'key2' => 'value2' ];
foreach($array_2 as $key => $item){
   if(array_key_exists($key, $array_1)){
       echo "Match found.";
   }
}
更新的答案我发现您可以使用数组相交键($a1,$a2)


那么,你是特别想知道两个对象是否共享同一个键,还是仅仅比较两个对象的长度就足够了?如果它们共享同一个键,并在它们共享键的情况下进行操作:)很好,这将为每个对象削掉一个键,还不错!:)
$array_1 = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3');
$array_2 = array('key2' => 'value2' );
$result = array_intersect_key($array_1,$array_2);
print_r($result);