我有2个数组....让我们称之为red_array和blue_array,我想要做的是创建一个final_array,其中blue_array项目的比率为1比2,而red_array又名
array[]= { BLUE_ARRAY_ITEM , RED_ARRAY_ITEM, RED_ARRAY_ITEM,
BLUE_ARRAY_ITEM,RED_ARRAY_ITEM, RED_ARRAY_ITEM, BLUE_ARRAY_ITEM} ....ect on`
最好的方法是什么?这是我开始尝试的内容,但它给我的一切都是一个意外的错误
$total_count=count($blue_query)+count($red_query);
$count=0;
$blue_count=0;
$red_count=0;
while ($count <= $total_count) {
if($blue_count<=50){
$finished_array[]=$blue_query[$blue_count];
$blue_count++;
$count++;
}
if($red_count<=50){
$finished_array[]=$red_query[$red_count];
$red_count++;
$count++;
$finished_array[]=$red_query[$red_count];
$red_count++;
$count++;
}
}
答案 0 :(得分:3)
尝试 -
<?php
$blue = array(1,4,7,10);
$red = array(2,3,5,6,8,9);
$final_array = array();
for($i=0; $i<sizeof($blue); $i++)
{
if($i < sizeof($blue))
{
$final_array[] = $blue[$i];
}
if(($i*2) < sizeof($red))
{
$final_array[] = $red[$i*2];
$final_array[] = $red[($i*2)+1];
}
}
echo '<pre>'; print_r($final_array);
的输出强>
<pre>Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
[9] => 10
)
的 DEMO 强>
答案 1 :(得分:1)
尝试以2:1合并,然后将所有剩余项目追加到最后
$b_size = sizeof($blue_arr);
$r_size = sizeof($red_arr);
$size = $b_size + $r_size;
$b_index=0;
$r_index=0;
for($i=0; $i<$size; $i++) {
if($b_index >= $b_size) {
$result[$i] = $red_arr[$r_index];
$r_index++;
} else if($r_index >= $r_size) {
$result[$i] = $blue_arr[$b_index];
$b_index++;
} else {
if($i % 3 == 0) {
$result[$i] = $blue_arr[$b_index];
$b_index++;
} else {
$result[$i] = $red_arr[$r_index];
$r_index++;
}
}
}
如果您希望在其中一个阵列的项目用尽时停止
,请使用此选项$b_size = sizeof($blue_arr);
$r_size = sizeof($red_arr);
$size = $b_size + $r_size;
$b_index=0;
$r_index=0;
for($i=0; ($b_index < $b_size) || ($r_index < $r_size); $i++) {
if($i % 3 == 0) {
$result[$i] = $blue_arr[$b_index];
$b_index++;
} else {
$result[$i] = $red_arr[$r_index];
$r_index++;
}
}
答案 2 :(得分:1)
编写此代码以获得蓝色和红色之间的3:2比率,即3蓝色和2红色
$final_array = array();
$count = sizeof($blue);
if(sizeof($red) > sizeof($blue)){
$count = sizeof($red);
}
for($i=0; $i<$count; $i++)
{
if(($i*3) < sizeof($blue))
{
$final_array[] = $blue[$i*3];
if(isset($blue[($i*3)+1])){
$final_array[] = $blue[($i*3)+1];
if(isset($blue[($i*3)+2])){
$final_array[] = $blue[($i*3)+2];
}
}
}
if(($i*2) < sizeof($red))
{
$final_array[] = $red[$i*2];
if(isset($red[($i*2)+1])){
$final_array[] = $red[($i*2)+1];
}
}
}