Попробуйте это,
$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);
Примечание: - Некоторые параметры передаются по ссылке.