gpt4 book ai didi

php - 如何从两个数组中删除重复对?

转载 作者:可可西里 更新时间:2023-10-31 23:43:21 25 4
gpt4 key购买 nike

我有两个这样的数组:

$arr = Array (1, 2, 3 ,4 ,5, 6 ,7 ,8 ) ;

还有这个:

$arr2 = Array (7, 6, 5,8 ,3 ,2 ,1, 4 )  

这些数组的对是具有相同键的数字($arr[0]-$arr2[0] ecc.)

1-7
2-6
3-5
4-8
5-3
6-2
7-1
8-4

如您所见,有一些重复的对,例如 1-7 和 7-1、2-6 和 6-2、3-5 和 5-3、4-8 和 8-4。

我需要一个函数来接收这两个数组并返回一个包含每一对的数组。

例如,这是函数应该返回的内容:

Array ( [0] => 1 [1] => 7 [2] => 2 [3] => 6 [4] => 3 [5] => 5 [6] => 4 [7] => 8 ) 

如您所见,这些对是:1-7、2-6、3-5 和 4-8。

我做了这个不能正常工作的函数:

function free_pairs($arr,$arr2){
$ok = 0;
$ris = array();
$indice_ris=0;
for ($i=1; $i <=count($arr) ; $i++) {
$x1 = $arr[$i];
$x2 = $arr2[$i];
for ($j=1; $j <= count($arr2) ; $j++) {
$y1 = $arr[$j];
$y2 = $arr2[$j];
if($x1 != $y2 && $x2 != $y1){
$ok = 1;
} else {
$ok = 0;
}
}
if ($ok == 1) {
$ris[$indice_ris] = $x1;
$ris[$indice_ris+1] = $x2;
$indice_ris = $indice_ris+2;
$ok = 0;
}
return $ris;
}

我认为问题在于:

if($x1 != $y2 && $x2 !=$y1)

你在想什么?

最佳答案

在对您的原始脚本进行一些更正后,这似乎可行:

$arr1 = Array (1, 2, 3, 4 ,5, 6 ,7 ,8);
$arr2 = Array (7, 6, 5, 8 ,3 ,2 ,1, 4);
$res = free_pairs($arr1, $arr2);
print_r($res);

function free_pairs($arr,$arr2){
$ris = array();
for ($i = 0; $i < count($arr); $i++) {
$x1 = $arr[$i];
$x2 = $arr2[$i];
$ok = 0;
for ($j = $i+1; $j < count($arr2); $j++) {
$y1 = $arr[$j];
$y2 = $arr2[$j];
if($x1 == $y2 && $x2 == $y1){
$ok = 1;
}
}
if ($ok == 0) {
$ris[] = $x1;
$ris[] = $x2;
}
}
return $ris;
}

输出:

Array
(
[0] => 5
[1] => 3
[2] => 6
[3] => 2
[4] => 7
[5] => 1
[6] => 8
[7] => 4
)

关于php - 如何从两个数组中删除重复对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7902996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com