PHP foreach动态数组

时间:2019-03-20 17:12:30

标签: php arrays dynamic foreach

首先谢谢您。 代码:

 $flag=1;
 foreach( $questionidset as $oneqid)
{

   if($oneqid%23==0)
   {
     if($flag<3)
    {
       array_push($questionidset, 23*$flag);
        $flag++;
    }

   }

}

print_r($questionidset);

问题: 如何使foreach在推入新元素后获得动态$ questionidset。

例如,原始的$ questionidset是{1,2,23}
输出应为:{1,2,23,23,46}

我的目的是在将新元素推送到名为$ questionidset的原始数组后,foreach循环时间可以增加

1 个答案:

答案 0 :(得分:0)

尝试一下

$flag = 1;
$length = 2;
$questionidset = [1, 2, 23];
for ($i = 0; $i < count($questionidset); $i++) {
    if ($questionidset[$i] % 23 == 0) {
        $questionidset[] = 23 * $flag;
        $flag++;
        if( $flag > $length )
            break;
    }
}

print_r($questionidset);

//This outputs : [1,2,23,23,46]
//if you increase length to 5
//The output will be : [1,2,23,23,46,69,92,115]

不知道为什么它不重复n次,其中n是输出中的元素数, 但是您始终可以像下面这样用递归来解决问题,它可以精确地迭代n次,其中n是输出中的元素数。

$flag = 1;
$length = 2;
$questionidset = [1, 2, 23];
$count = count($questionidset);
$start = 0;

function for_loop(&$arr, $count, $i, &$flag, $length) {
    if ($i+1 > $count)
        return;
    if ($arr[$i] % 23 == 0) {
        $arr[] = 23 * $flag;
        $flag++;
        $count++;
        $i++;
        if($flag > $length)
           return;
        else 
           for_loop($arr, $count, $i, $flag, $length);
    }
    $i++;
    for_loop($arr, $count, $i, $flag, $length);
}

for_loop($questionidset, $count, $start, $flag, $length);

print_r($questionidset);

注意:-一些参数是通过引用传递的。