首先谢谢您。 代码:
$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循环时间可以增加
答案 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);
注意:-一些参数是通过引用传递的。