Простите, что мне не хватает опыта, но мне действительно нужно выбрать ваш мозг в правильной формулировке этого кода PHP.Как переписать этот фрагмент программирования BASIC на PHP?
У меня есть эти две строки BASIC:
100 PITCHHOR=(LSLATHOR/(NRSLATVER+1)):LSLATHOR=PITCHHOR*(NRSLATVER+1)
110 IF PITCHHOR>72 THEN NRSLATVER=NRSLATVER+1:GOTO 100
Я просто нужно положить его в PHP код, я понимаю, что это из контекста, но я просто нужна логика. То, что происходит, делает настройку на PITCHHOR
на линии 100 и регулировку до LSLATHOR
. Затем, если PITCHHOR > 72
настраивает NRSLATVER
и возвращается к строке 100, и он, кажется, зацикливается до тех пор, пока не будет выполнено условие, когда PITCHHOR
меньше значения 72. Я прав в этом?
Что бы выглядел PHP для этих двух строк, я бы использовал цикл while
?
Моя попытка (Возможно, что делает ошибки)
<?php
$pitchhor = (floatval($lslathor)/(floatval($nrslatver) + 1));
$lslathor = (floatval($pitchhor) * (floatval($nrslatver) + 1));
while ($pitchhor > 72) {
$nrslatver += 1;
$pitchhor = (floatval($lslathor)/(floatval($nrslatver) + 1));
$lslathor = (floatval($pitchhor) * (floatval($nrslatver) + 1));
}
?>
Я ценю вашу помощь TY VM.
EDIT 1:
Я сделал небольшое изменение, пытаясь использовать goto
поскольку она была введена в PHP 5.3.0.
Эта логика отражает код BASIC?
recalc:
$pitchhor = (floatval($lslathor)/(floatval($nrslatver) + 1));
$lslathor = (floatval($pitchhor) * (floatval($nrslatver) + 1));
if ($pitchhor > 72) {
$nrslatver += 1;
goto recalc;
}
EDIT 2:
Я закончил с использованием этого, и она работала благодаря Ричард Chambers (я добавил динамические толерантности вместо фиксированного допуска шага 72, и это относится к спецификациям, изложенных в старой программе BASIC):
do {
$pitch = ($length/($slat_qty + 1));
$length = $pitch * ($slat_qty + 1);
if($pitch > $tolerance) {
++$slat_qty;
}
} while($pitch > $tolerance);
Поскольку вы хотите выполнить расчет первой строки хотя бы один раз в любом случае, цикл «do ... while» был бы лучше подходит для этого. – CBroe
Будет ли «работать»? Начиная с PHP 5.3.0. – TheRealWitblitz
Вопрос представляется более подходящим для http://codereview.stackexchange.com. Во всяком случае, это кажется прекрасным. Вы можете использовать 'do while', как предлагает @CBroe. –