我在编码过程中遇到了一种谜题
我想分享并得到你的帮助。
我在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
这样的对。
对于每对,我将检查这对阵列是否相等。
我怎么能这样做
答案 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 )