如何用PHP从两个数组生成无重复的元素配对?
嘿,我懂你要实现的需求了——从两个数组生成所有不重复的元素配对,还要保持那种有序循环的序列感,对吧?刚好我之前也做过类似的逻辑,给你写个简单清晰的PHP脚本就能搞定:
<?php // 你的输入数组 $arr1 = array('A', 'B', 'C', 'D'); $arr2 = array('X', 'Y', 'Z'); $output = []; $len1 = count($arr1); $len2 = count($arr2); $totalPairs = $len1 * $len2; // 所有唯一配对的总数,不会重复 for ($i = 0; $i < $totalPairs; $i++) { // 循环遍历arr1,用完一轮自动从头开始 $elemFromArr1 = $arr1[$i % $len1]; // 同样循环遍历arr2,保持序列性 $elemFromArr2 = $arr2[$i % $len2]; $output[] = [$elemFromArr1, $elemFromArr2]; } // 打印验证结果(可选) print_r($output);
逻辑解释:
- 首先计算两个数组的长度,然后算出所有不重复配对的总数是两个数组长度的乘积——因为每个
arr1的元素都要和arr2的每个元素配对一次,刚好是无重复的全组合。 - 循环过程中,用
$i % 数组长度的方式实现循环遍历:比如当$i超过数组长度时,取余操作会让索引回到数组开头,完美实现你要的序列感。 - 每一轮循环把配对好的元素组添加到
$output里,最终得到的结果完全符合你给出的示例:前6项就是[A,X]、[B,Y]、[C,Z]、[D,X]、[A,Y]、[B,Z],以此类推直到所有12组配对生成完毕。
如果你需要调整配对的顺序逻辑,比如先固定arr2循环再走arr1,只需要把$elemFromArr2的索引改成(int)($i / $len1) % $len2就行,但目前的代码完全匹配你给出的期望输出哦。
内容的提问来源于stack exchange,提问作者Ajay Choudhary
相关产品推荐
相关产品推荐

