laravel 如何使两个数组的合并不出现重复记录和交叉重复删除

kdfy810k  于 2022-12-24  发布在  其他
关注(0)|答案(3)|浏览(167)
$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);
        }
    }
}

如何使两个数组的合并不出现重复记录和交叉重复删除
像这样插入DB

|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       |

我想要像这样的DB插入

|   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    |
rxztt3cl

rxztt3cl1#

@Vaibhav试试这个,希望这对你有帮助。另外我改变了只执行一次查询而不是循环执行。

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

for($i = 0; $i < count($files); $i++)
{
    for($j = $i; $j < count($other); $j++)
    {
        if($files[$i] != $other[$j])
        {
            array_push($data,['column1' => $files[$i], 'column2' => $other[$j]]);
        }
    }   
}
echo "<pre>";
print_r($data);
\DB::table('abcd')->insert($data);
zazmityj

zazmityj2#

您使用了in_array(),请参考以下代码:

$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) == true){
        return false
    }else{
        \DB::table('abcd')->insert($data);
    }
  }
}
w6mmgewl

w6mmgewl3#

这是另一个例子
| 项目a| B||项目a|(c)秘书长的报告||项目a|日||项目a| 电子||项目a|f级||B|(c)秘书长的报告| |B|日||B|电子||B|f级|

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

for ($i=0;$i< count($files) ; $i++)
{
    $counter = $i > 0 ? $i + 1 : 1;
    for ($j=$counter;$j< count($other) ; $j++)
    {
        $data[] = [
                'column1' => $files[$i],
                'column2' => $other[$j],
            ];
            
    }   
}

再举一个例子,
| 栏1|第2栏|
| - ------|- ------|
| 项目a| B|
| 项目a|(c)秘书长的报告|
| 项目a|日|
| 项目a|电子|
| 项目a| f级|
| B|项目a|
| B|(c)秘书长的报告|
| B|日|
| B|电子|
| B| f级|

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

for ($i=0;$i< count($files) ; $i++)
{
    for ($j=0;$j< count($other) ; $j++)
    {
        if($files[$i] != $other[$j]){
            $data[] = [
                    'column1' => $files[$i],
                    'column2' => $other[$j],
                ];
         
            }
    } 
}

相关问题