在PHP中创建唯一的数组对

时间:2013-11-15 01:12:24

标签: php arrays multidimensional-array

我在编码过程中遇到了一种谜题 我想分享并得到你的帮助。

   我在MySql数据库中查询并获得数组中的结果    所以我有这样的输出:

 $rows=array(n) { // for each n value elements can have different values
  ["val1"] => string(3) "abc"
  ["val2"] => string(3) "def"
  ["val3"] => string(3) "ghi"
  ["val4"] => string(3) "jkl"
}

例如,假设n = 4,我需要创建唯一的对,队列中不会出现相同数量的对。我需要的是如例子

n= 1, 2, 3, 4

我需要得到的对

1-2, 1-3, 1-4, 2-3, 2-4, 3-4

我需要避免像2-1. 3-1, 4-1, 3-2, 4-2, 4-3 and 1-1, 2-2, 3-3, 4-4这样的对。    
对于每对,我将检查这对阵列是否相等。    我怎么能这样做

2 个答案:

答案 0 :(得分:1)

<?php

$n = 4;

for($i = 1; $i<=$n; $i++)
    for($x = 1; $x<=$n; $x++)
        if($i != $x && !isset($array[$x][$i]))
            $array[$i][$x] = '';


//echo '<pre>';
//var_dump($array);
//echo '</pre>';
?>

输出使用

<?php

for($i = 1; $i<=$n; $i++)
    for($x = 1; $x<=$n; $x++)
        if(isset($array[$i][$x]))
            echo $i.'-'.$x.', ';

?>

将是:

如果$n = 4

  

1-2,1-3,1-4,2-3,2-4,3-4,

如果$n = 10

  

1-2,1-3,1-4,1-5,1-6,1-7,1-8,1-9,1-10,2-3,2-4,2-5 ,2-6,2-7,2-8,2-9,2-10,3-4,3-5,3-6,3-7,3-8,3-9,3-10,4 -5,4-6,4-7,4-8,4-9,4-10,5-6,5-7,5-8,5-9,5-10,6-7,6-8 ,6-9,6-10,7-8,7-9,7-10,8-9,8-10,9-10,

答案 1 :(得分:1)

我正在使用数组,我只是在完成所有对后删除元素,可能只有用于

的更好的解决方案
  $n = 5;
$array = array("abc","def","ghi","jkl","mno");
$r_temp = $array;
$r_result = array();
foreach($array as $r){
    $i = 0;
    while($i < $n-1){
        array_push($r_result,$r_temp[0].$r_temp[$i+1]);
        $i++;
    }
    $n--;
    array_shift($r_temp); //Remove the first element since all the pairs are used
}

print_r($r_result);

输出

Array ( [0] => abcdef [1] => abcghi [2] => abcjkl [3] => abcmno [4] => defghi [5] => defjkl [6] => defmno [7] => ghijkl [8] => ghimno [9] => jklmno )