$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 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 |
我想这样插入
| 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 |
@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);
您使用的是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) == false){
DB::table('abcd')->insert($data);
}
}
}
这是另一个例子
| a | b || | c | | | d | | | e | | | f | | b c | | | | | b d e b | | | | | f b |
$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],
];
}
}
例如
column1 | column2 | b |
---|---|
c | |
d | |
e | |
f | |
c | |
d | |
e | |
f |