php – 如何从两个数组中删除重复对?
发布时间:2020-12-13 22:32:29 所属栏目:PHP教程 来源:网络整理
导读:我有两个这样的数组: $arr = Array (1,2,3,4,5,6,7,8 ) ; 还有这个: $arr2 = Array (7,8,1,4 ) 这些数组的对是具有相同键的数字($arr [0] – $arr2 [0] ecc.) 1-72-63-54-85-36-27-18-4 你可以看到有一些重复的对,如1-7和7-1,2-6和6-2,3-5和5-3,4-8和8-4.
我有两个这样的数组:
$arr = Array (1,2,3,4,5,6,7,8 ) ; 还有这个: $arr2 = Array (7,8,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,8); $arr2 = Array (7,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 ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |