在数组元素之间一对一组合而不重复

时间:2015-02-24 10:52:17

标签: php arrays

$example1 = array(3, 9, 5, 12);
$example2 = array(5, 4);
$example3 = array(8, 2, 4, 7, 3);

如何在不重复的情况下在这些数组元素之间进行一对一组合?

$example1应该返回:

3 9
3 5
3 12
9 5
9 12
5 12

$example2:

5 4

$example3:

8 2
8 4
8 7
8 3
2 4
2 7
2 3
4 7
4 3
7 3

我试过了:

<?php 

$example3 = array(8, 2, 4, 7, 3);

foreach ($example3 as $e) {

  foreach ($example3 as $e2) {
     if ($e != $e2) {
        echo $e . ' ' . $e2 . "\n"; 
     }
  }

}

这让我回复:http://codepad.org/oHQTSy36

但排除重复的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

几乎。但是在第二个循环中,你只需要选择原始数组的一部分。

array_slice功能在这里可能会有所帮助。

$example1 = array(3, 9, 5, 12);

for ($i = 0, $n = count($example1); $i < $n; $i++) {
    foreach(array_slice($example1, $i+1) as $value) {
        echo $example1[$i] . ' ' . $value . "\n";
    }
}

答案 1 :(得分:0)

这是获得结果的另一种方式。

for($i=0;$i<count($example1);$i++)
{
    for($j=$i;$j<count($example1);$j++)
    {
        if($example1[$i] != $example1[$j])
        {
            echo $example1[$i].'::'.$example1[$j].'<br>';
        }
    }
}