Я начинаю на PHP, и я хочу создать программу, которая преобразует десятичные числа в шестнадцатеричные числа. (На самом деле я хочу преобразовать значение десятичного значения цвета в шестнадцатеричное значение) Однако он не работает должным образом. Например, когда я нажимаю кнопку преобразования с этими параметрами: красный = 98 синих = 123 зеленый = 54 Он генерирует этот результат:Расчет PHP неправильный
Red : Green : Blue : B
Я не понимаю, что неправильно это.
Это мой исходный код:
<html>
<head>
<title>Convert Decimal Number to Hexadecimal Number</title>
<form method="POST" action="index.php" >
Red : <input type="text" name="red" /> <br />
Green: <input name="green" type="text" /> <br />
Blue : <input name="blue" type="text" /> <br />
<input type="submit" value="Calculate!" /> <br />
</form>
</head>
<body>
<?php
$completely="";
if ($_POST['red']==""){
exit();
}
function subcalculate($valuetoconvert){
if ($valuetoconvert>9){
switch ($valuetoconvert){
case 10:
$valuetoconvert=A;
break;
case 11:
$valuetoconvert=B;
break;
case 12:
$valuetoconvert=C;
break;
case 13:
$valuetoconvert=D;
break;
case 14:
$valuetoconvert=E;
break;
case 15:
$valuetoconvert=F;
break;
}
return $valuetoconvert;
}
}
function dectohexcal($color,$colorname){
$bir=subcalculate(($color-($color%16))/16);
$iki=subcalculate($color%16);
if ($bir==0){
echo "$colorname : $iki <br />";
$completely=$completely+$iki;
}else{
echo "$colorname : $bir$iki <br />";
$completely=$completely+$bir+$iki;
}
}
dectohexcal($_POST['red'], "Red");
dectohexcal($_POST['green'], "Green");
dectohexcal($_POST['blue'], "Blue");
echo "<br />$completely";
?>
</body>
Зачем изобретать колесо? Есть функция, которая преобразует десятичные знаки в шестнадцатеричные: http://php.net/manual/en/function.dechex.php – Qirel
И ваша проблема заключается в том, что вы возвращаете '$ valuetoconvert' внутри' subcalculate() ', когда число > 9, поэтому он ничего не возвращает <= 9 – Qirel