Помогите исправить ошибки в коде на PHP
1 повідомлення
#13 років тому
Помогите исправить ошибки в коде на PHPНаписал код для последовательной генерации паролей по принципу перевода десятичного числа в 16-ричное на Delphi.
Но нужно было перевести на PHP.
Я написал код но он не хочет работать,
ПОМОГИТЕ НАЙТИ ОШИБКИ:
Заранее благодарен.
На PHP:
<?php
echo Convert(100);
Function Convert($n)
{
$Symbols = '0123456789ABCDEF';
$Base=16;
if ($n==0)
{
return 0;
$ret =0;
}
else {
return '';
$ret='';
}
while (n>0) {
$bDigit = $n % $Base;
$n=$n/$Base;
$ret=$Symbols + $ret;
return $ret ;
}
}
?>
И на всякий случай на ДЕЛФИ:
function Convert(n : bigint; base : TBase) : string;
//const
//cSymbols : array of char = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!"?;%:?*()_+=-~/\<>,.{}';
var
bDigit : byte;
cSymbols: string;
begin
cSymbols := '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!"?;%:?*()_+=-~/\<>,.{}';
if n = 0 then
result := '0'
else
result := '';
while n > 0 do
begin
bDigit := n mod base;
n := n div base;
result := cSymbols + result;
end;
end;
Прошу не судить строго, я только начал учить PHP.
1172 повідомлення
#13 років тому
В php (как и многих других языках), в отличие от delphi, возврат результата делается через использование языковой конструкции return. Но как только вы указали return, вас выкидывает из функции.
204 повідомлення
#13 років тому
Цитата ("ARGLETO"):while (n>0) {
$bDigit = $n % $Base;
$n=$n/$Base;
$ret=$Symbols + $ret;
return $ret ;
}
Кроме того, не понятно зачем цикл если после первой итерации вы из него выходте.Да и останавливается цикл в php инструкцией break;
Цитата:
$Symbols
Такая запись в вашем случае не сработает.
279 повідомлень
#13 років тому
Сорри,нужно было исправить ошибки в коде,а не найти простой способ конвертации
4 повідомлення
#13 років тому
<?php
echo Convert(100);
Function Convert($n)
{
$Symbols = '0123456789ABCDEF';
$Base = 16;
if ($n == 0) { # если n есть 0
return 0; # выйти из функции и вернуть значение 0
$ret = 0; #! <- этот код не выполняется
} else { # или
return ''; # выйти из функции и вернуть значение ''
$ret = ''; #! <- этот код не выполняется
}
# код что дальше не выполняется
while (n > 0) {
$bDigit = $n % $Base;
$n = $n/$Base;
$ret = $Symbols + $ret;
return $ret; # выйти из функции и вернуть значение в переменной ret
}
}
?>
или с подсветкой синтаксиса посилання