鍍金池/ 問(wèn)答/PHP  數(shù)據(jù)庫(kù)/ 兩個(gè)多維數(shù)組如何查詢出滿足如下條件的數(shù)據(jù)

兩個(gè)多維數(shù)組如何查詢出滿足如下條件的數(shù)據(jù)

 array(2) {
   [0]=>
   array(4) {
     ["qty"]=>
     string(1) "2"
     ["county"]=>
     string(2) "ID"
     ["sku"]=>
     string(13) "B00208MM01000"
     ["id"]=>
     string(8) "50040019"
   }
   [1]=>
   array(4) {
     ["qty"]=>
     string(1) "2"
     ["county"]=>
     string(2) "ID"
     ["sku"]=>
     string(13) "B00208MM03000"
     ["id"]=>
     string(8) "50040019"
   }
 }
 

這是一個(gè)需要查詢出來(lái)的數(shù)組。


array(189) {
 [0]=>
 array(4) {
   ["qty"]=>
   string(1) "1"
   ["county"]=>
   string(2) "ID"
   ["sku"]=>
   string(13) "B00208MM01000"
   ["id"]=>
   string(4) "1040"
 }
 [1]=>
 array(4) {
   ["qty"]=>
   string(1) "1"
   ["county"]=>
   string(2) "ID"
   ["sku"]=>
   string(13) "B00208MM02000"
   ["id"]=>
   string(4) "1041"
 }
 [2]=>
 array(4) {
   ["qty"]=>
   string(1) "1"
   ["county"]=>
   string(2) "ID"
   ["sku"]=>
   string(13) "B00208MM03000"
   ["id"]=>
   string(4) "1042"
 }
 [3]=>
 array(4) {
   ["qty"]=>
   string(1) "1"
   ["county"]=>
   string(2) "ID"
   ["sku"]=>
   string(13) "B00208MM01000"
   ["id"]=>
   string(4) "1043"
 }
 [4]=>
 array(4) {
   ["qty"]=>
   string(1) "1"
   ["county"]=>
   string(2) "ID"
   ["sku"]=>
   string(13) "B00208MM02000"
   ["id"]=>
   string(4) "1044"
 }
 [5]=>
 array(4) {
   ["qty"]=>
   string(1) "1"
   ["county"]=>
   string(2) "ID"
   ["sku"]=>
   string(13) "B00208MM02000"
   ["id"]=>
   string(4) "1045"
 }
 [6]=>
 array(4) {
   ["qty"]=>
   string(1) "1"
   ["county"]=>
   string(2) "ID"
   ["sku"]=>
   string(13) "B00208MM02000"
   ["id"]=>
   string(4) "1046"
 }
 

這是一個(gè)總的結(jié)果集合。
我需要從第一個(gè)數(shù)組為條件,查詢出第二個(gè)總合集中符合qty,county sku相同的值,請(qǐng)問(wèn)有人知道怎么寫的嗎?

   foreach ($集合1as $k=>$v){
            foreach ($集合二 as $k2 =>$v2){
                if ($v['qty']==$v2['qty'] && $v['county']==$v2['county'] && $v['sku']==$v2['sku']){
                    $data[$k2][]=$v2['id'];
                }else{
                    //unset($data[$k2]);
                }
            }

        }
        

這是我自己寫的,不知道是不是哪里錯(cuò)了,獲取的值也不對(duì)

回答
編輯回答
喵小咪

你給出的示例數(shù)據(jù)不對(duì)吧? 第一個(gè)數(shù)組 qty都是2,第二個(gè)數(shù)組里面qty都是1,怎么能有相等的?


參考實(shí)現(xiàn):

$arr1 = [
    ['qty' => '2', 'country' => 'ID', 'sku' => 'B00208MM01000', 'id' => '50040019'],
    ['qty' => '2', 'country' => 'ID', 'sku' => 'B00208MM03000', 'id' => '50040019']    
];
$arr2 = [
    ['qty' => '1', 'country' => 'ID', 'sku' => 'B00208MM01000', 'id' => '1040'],
    ['qty' => '1', 'country' => 'ID', 'sku' => 'B00208MM02000', 'id' => '1041'],
    ['qty' => '1', 'country' => 'ID', 'sku' => 'B00208MM03000', 'id' => '1042'],
    ['qty' => '1', 'country' => 'ID', 'sku' => 'B00208MM01000', 'id' => '1043'],
    ['qty' => '1', 'country' => 'ID', 'sku' => 'B00208MM02000', 'id' => '1044']
];

$finalArr = [];
foreach ($arr1 as $k => $v) {
    foreach ($arr2 as $k2 => $v2) {
        if ($v2['qty'] == $v['qty'] && $v2['country'] == $v['country'] && $v2['sku'] == $v['sku']) {
            array_push($finalArr, $v2);
        }
    }
}
print_r($finalArr);
2018年7月5日 14:34
編輯回答
熟稔

剛剛看錯(cuò)了,array_intersect只會(huì)返回有交集的鍵,直接這樣就好了:

foreach ($arr1 as $k=>$v){
    foreach ($arr2 as $k2=>$v2){
        if ($v['qty']==$v2['qty'] && $v['county']==$v2['county'] && $v['sku']==$v2['sku']){
            $data=$v2;
        }
    }
}
2018年6月19日 19:45