Search code examples
phparrayslaraveldatabasecombinations

How to make combination of two array without duplicate records and cross duplicate remove


$files = ['a','b','c','d','e','f'];
$other = ['a','b','c','d','e','f'];

foreach($files as $k => $file){
    foreach($other as $key => $value){
        $data = [
            'column1' => $file,
            'column2' => $value,
        ];
        if($file == $value){
            return false
        }else{
            \DB::table('abed')->insert($data);
        }
    }
}

How to make combination of two array without duplicate records and cross duplicate remove

DB insert like that


|column1 |  column2 | 
|------- |  ------- |
|   a    |  b       |       
|   a    |  c       |
|   a    |  d       |
|   a    |  e       |
|   a    |  f       |
|   b    |  a       |
|   b    |  c       |
|   b    |  d       |
|   b    |  e       |
|   b    |  f       |
|   c    |  a       |
|   c    |  b       |
|   c    |  d       |
|   c    |  e       |
|   c    |  f       |
|   d    |  a       |
|   d    |  b       |
|   d    |  c       |
|   d    |  e       |
|   d    |  f       |
|   e    |  a       |
|   e    |  b       |
|   e    |  c       |
|   e    |  d       |
|   e    |  f       |
|   f    |  a       |
|   f    |  b       |
|   f    |  c       |
|   f    |  d       |
|   f    |  e       |

I want like this DB insert

|   a   |   b    |          
|   a   |   c    |
|   a   |   d    |
|   a   |   e    |
|   a   |   f    |
|   b   |   c    |
|   b   |   d    |
|   b   |   e    |
|   b   |   f    |
|   c   |   d    |
|   c   |   e    |
|   c   |   f    |
|   d   |   e    |
|   d   |   f    |
|   e   |   f    |

Solution

  • You used in_array(), refer to the below code :

    $files = ['a','b','c','d','e','f'];
    $other = ['a','b','c','d','e','f'];
    
    foreach($files as $k => $file){
      $parrentArray[] = $file;
      foreach($other as $key => $value){
        $data = [
            'column1' => $file,
            'column2' => $value,
        ];
        if(in_array($value, $parrentArray) == false){
            \DB::table('abcd')->insert($data);
        }
      }
    }