我不知道如何命名这个,以及如何做:
<?php
$a = ['a1','a2','a3','a4']; // and more a5 … a42
$b = ['b1','b2','b3','b4'];
$c = ['c1','c2','c3','c4'];
// want
$full = ['a1','b1','c1',
'c2','a2','b2',
'b3','c3','a3',
'a4','b4','c4'];
print_r($full);
就像a,b,c,a,b,c,a,b,c,a,b,c,a,b,c,a,解是一个数学级数?
需要合并所有数组,请浏览此 PHP 代码。
$a = array('a1','a2','a3','a4'); // and more a5 … a42
$b = array('b1','b2','b3','b4');
$c = array('c1','c2','c3','c4');
$d = array_merge($a,$b,$c);
echo mathseries($d,3);
function mathseries($d=array(),$break_number) {
$f = count($d) / $break_number;
for($i=0;$i<$f;$i++) {
$r[] = $d[$i].','.$d[$i+$f].','.$d[$i+($f*2)];
}
$r = implode(',',$r);
return $r;
}
创建一个函数,其中两个参数发送,第一个参数数组。 第二个参数是断点。
$arr = [$a, $b, $c];
$full = [];
$i = 0;
$k = 0;
for ($j = 0; $j < count($a); $j++)
do {
$full[] = $arr[$k][$j];
$i = ++$i % 3;
if ($i) $k = ++$k % 3;
} while ($i);
print_r($full);
演示
首先,我们创建一个包含三个原始数组的多维数组,然后通过两个嵌套的for
循环填充目标$result
:
$all = [ $a, $b, $c ];
$result = [];
for( $i=0; $i<count( $a ); $i++ )
{
for( $j=0; $j<count( $all ); $j++ )
{
$result[] = $all[ 3*(($i+$j*2)%3>0)-(($i+$j*2)%3) ][ $i ];
}
}
3v4l.org 演示
为了填充$result
,第二个键[$i]
是每个原始数组的渐进式索引(0, 1, 2, ...);为了创建第一个键,我们使用这个算法:
3 * ( ($i + $j * 2 ) % 3 > 0 ) - ( ( $i + $j * 2 ) % 3 ) $i $j
--------------------------------------------------------
3 * ( ( 0 + 0 * 2 ) % 3 > 0 ) - ( ( 0 + 0 * 2 ) % 3 ) 0 0
3 * ( ( 0 ) % 3 > 0 ) - ( ( 0 ) % 3 )
3 * ( 0 ) - ( 0 ) = 0
3 * ( ( 0 + 1 * 2 ) % 3 > 0 ) - ( ( 0 + 1 * 2 ) % 3 ) 0 1
3 * ( ( 2 ) % 3 > 0 ) - ( ( 2 ) % 3 )
3 * ( 1 ) - ( 2 ) = 1
3 * ( ( 0 + 2 * 2 ) % 3 > 0 ) - ( ( 0 + 2 * 2 ) % 3 ) 0 2
3 * ( ( 4 ) % 3 > 0 ) - ( ( 4 ) % 3 )
3 * ( 1 ) - ( 1 ) = 2
--------------------------------------------------------
3 * ( ( 1 + 0 * 2 ) % 3 > 0 ) - ( ( 1 + 0 * 2 ) % 3 ) 1 0
3 * ( ( 1 ) % 3 > 0 ) - ( ( 1 ) % 3 )
3 * ( 1 ) - ( 1 ) = 2
3 * ( ( 1 + 1 * 2 ) % 3 > 0 ) - ( ( 1 + 1 * 2 ) % 3 ) 1 1
3 * ( ( 3 ) % 3 > 0 ) - ( ( 3 ) % 3 )
3 * ( 0 ) - ( 0 ) = 0
3 * ( ( 1 + 2 * 2 ) % 3 > 0 ) - ( ( 1 + 2 * 2 ) % 3 ) 1 2
3 * ( ( 5 ) % 3 > 0 ) - ( ( 5 ) % 3 )
3 * ( 1 ) - ( 2 ) = 1
--------------------------------------------------------
3 * ( ( 2 + 0 * 2 ) % 3 > 0 ) - ( ( 2 + 0 * 2 ) % 3 ) 2 0
3 * ( ( 2 ) % 3 > 0 ) - ( ( 2 ) % 3 )
3 * ( 1 ) - ( 2 ) = 1
3 * ( ( 2 + 1 * 2 ) % 3 > 0 ) - ( ( 2 + 1 * 2 ) % 3 ) 2 1
3 * ( ( 4 ) % 3 > 0 ) - ( ( 4 ) % 3 )
3 * ( 1 ) - ( 1 ) = 2
3 * ( ( 2 + 2 * 2 ) % 3 > 0 ) - ( ( 2 + 2 * 2 ) % 3 ) 2 2
3 * ( ( 6 ) % 3 > 0 ) - ( ( 6 ) % 3 )
3 * ( 0 ) - ( 0 ) = 0
--------------------------------------------------------
3 * ( ( 3 + 0 * 2 ) % 3 > 0 ) - ( ( 3 + 0 * 2 ) % 3 ) 3 0
3 * ( ( 3 ) % 3 > 0 ) - ( ( 3 ) % 3 )
3 * ( 0 ) - ( 0 ) = 0
3 * ( ( 3 + 1 * 2 ) % 3 > 0 ) - ( ( 3 + 1 * 2 ) % 3 ) 3 1
3 * ( ( 5 ) % 3 > 0 ) - ( ( 5 ) % 3 )
3 * ( 1 ) - ( 2 ) = 1
3 * ( ( 3 + 2 * 2 ) % 3 > 0 ) - ( ( 3 + 2 * 2 ) % 3 ) 3 2
3 * ( ( 7 ) % 3 > 0 ) - ( ( 7 ) % 3 )
3 * ( 1 ) - ( 1 ) = 2
--------------------------------------------------------
(...)