我有这段代码:
$um = array("PHP", "JAVA", "MySQL")
$a = count($um)
for ($i = 0; $i < $a; $i++) {
for ($x = $i + 1; $x <$a; $x++) {
$arr1 [] = array($um[$i],$um[$x]);
}
}
这将输出类似这些组合的内容:
PHP[0] JAVA[1]
PHP[0] MySQL[2]
JAVA[1] MySQL[2]
嗯,没有任何问题。
但是现在,我想将输出更改为:
PHP[0] JAVA[1]
JAVA[1] MySQL[2]
MySQL[2] PHP[0]
三个数组元素的逻辑相同,甚至是10,依此类推。
对此有何想法?
答案 0 :(得分:1)
只需使用模运算:你想对索引(i,i + 1)进行配对,如果i+1
变得太大,for ($i = 0; $i < $a; $i++) {
echo $um[$i], ', ', $um[($i+1) % $a]
}
会回绕到0。
$a=3
因此0, 1
1, 2
2, 0 (since 3 % 3==0)
根据索引显示:
{{1}}
答案 1 :(得分:1)
// make a copy of the array
$array2 = $array;
// rotate the entries by one
$array2[] = array_shift($array2);
// combine the elements
$combined = array_map(function () { return func_get_args(); }, $array, $array2);