Php 多维数组与简单数组的比较

Php 多维数组与简单数组的比较,php,arrays,Php,Arrays,我有两个数组,我想比较这两个数组并找到匹配项。如果807和200出现在与131相同的键中,则创建第三个数组 array(131=>(807,200)); 阵列1:- Array([0] => 807,[1] => 200) 阵列2:- $mat= Array([0] => Array([131] => 807),[1] => Array([132] => 807),[2] => Array([125] => 200),[3] =>

我有两个数组,我想比较这两个数组并找到匹配项。如果807和200出现在与131相同的键中,则创建第三个数组

array(131=>(807,200));
阵列1:-

Array([0] => 807,[1] => 200)
阵列2:-

$mat= Array([0] => Array([131] => 807),[1] => Array([132] => 807),[2] => Array([125] => 200),[3] => Array([131] => 200)) 
我的代码:

<?php
$filtered = array();
array_walk_recursive($matchingskusarr, function($val, $key) use(&$filtered) {
    if ($key === 131) {
        echo "The key $key has the value $val<br>";
        $filtered[$val] = $key;
    }
});

echo "<pre>";
print_r($filtered);
echo "</pre>";
?>

您可以这样使用:

$matchingskusarr = Array( 0 => Array(131 => 807), 1 => Array(132 => 807),2 => Array(125 => 200),3 => Array(131 => 200)) ;
$skus = array(0=>807, 1=>200);


function yourMatch($skus, $matchingskusarr) {
    $continue = [];
    foreach ($matchingskusarr as $array) {
        //Get the first key !!!
        foreach ($array as $key => $value);
        //Column already tested just continue
        if(isset($continue[$key])) {
            continue;
        }
        //New column we need to check if it matches our $skus
        $column = array_column($matchingskusarr, $key);
        if($column  == $skus) {
            return [$key => $column ];
        }
        $continue[$key] = true;
    }
    return null;     
}

print_r(yourMatch($skus, $matchingskusarr));
更新1:


演示:

Mycode是这个
数组(131=>(807200))您的预期结果?如果第二个数组对
131
键只有一个匹配项,该怎么办?我的第一个数组是skus$skus=array([0]=>807,[1]=>200);我有另一个数组$matchingskusarr=array([0]=>array([131]=>807),[1]=>array([132]=>807),[2]=>array([125]=>200),[3]=>array([131]=>200));我想找到,如果数组1中的值与数组2中的值匹配,如果数组2中的值都存在,并且数组2中的键相同,那么将数组1修改为数组([131]=>(807200));它像charm一样工作,但在$sku数组也是多维的$sku=数组(数组(0=>807,1=>200),数组(0=>807,1=>200,2=>415)时不起作用;foreach($skus as$od){print_r(yourMatch($od,$matchingskusarr));echo”“;}当我将您的函数用于$skus=array(array(0=>807,1=>200),array(0=>807,1=>200,2=>415));它只返回数组([131]=>Array([0]=>807,[1]=>200))每个($sku作为$sku的sku)一个数组{print_r(yourMatch($sku,$matchingskusarr));echo”“;}如果可以的话,它不会检查$sku数组的第二个元素的匹配吗?
$matchingskusarr = Array( 0 => Array(131 => 807), 1 => Array(132 => 807),2 => Array(125 => 200),3 => Array(131 => 200)) ;
$skus = array(0=>807, 1=>200);


function yourMatch($skus, $matchingskusarr) {
    $continue = [];
    foreach ($matchingskusarr as $array) {
        //Get the first key !!!
        foreach ($array as $key => $value);
        //Column already tested just continue
        if(isset($continue[$key])) {
            continue;
        }
        //New column we need to check if it matches our $skus
        $column = array_column($matchingskusarr, $key);
        if($column  == $skus) {
            return [$key => $column ];
        }
        $continue[$key] = true;
    }
    return null;     
}

print_r(yourMatch($skus, $matchingskusarr));