funktionsrückgabe:PHP
-
12-11-2019 - |
Frage
Ich bin mir nicht sicher, was mir fehlt, aber ich kann es nicht verstehen $c
um korrekt auszugeben.
<?php
function pythThm($a, $b){
$a2 = pow($a, 2);
$b2 = pow($b, 2);
$c = sqrt($a2 + $b2);
if(is_int($c)){return $c;}
}
echo pythThm(3, 4);
//outputs nothing, should be 5
?>
Ich entschuldige mich für die Anfängerfrage.
Lösung des Problems:
<?php
function pythThm($a, $b){
$a2 = pow($a, 2);
$b2 = pow($b, 2);
$c = sqrt($a2 + $b2);
if($c - round($c) == 0){return $c;}
}
echo pythThm(4, 4);
//returns nothing
echo pythThm(3,4);
//returns 5
?>
Danke an alle, die geantwortet haben...Ich werde beim nächsten Mal die vollständigen Informationen über die Funktion lesen!
Lösung
sqrt
gibt ein zurück float
, was kein ist int
, ihre Funktion gibt also nichts zurück.Lassen Sie einfach die is_int
scheck?
Andere Tipps
sqrt
gibt immer einen float zurück.Ihre if-Anweisung ist immer falsch.
Wenn Sie die Überprüfung durchführen möchten, tun Sie dies:
$i = (int) $c;
if($c == $i) return $c
Was dies bewirkt, ist, den Float in ein int zu werfen, und wenn der Float $c
und der int $i
sind gleich, dann wird es zurückkehren
sqrt
gibt ein zurück float
, deshalb is_int
ist immer falsch.
Wenn Sie wirklich überprüfen möchten, ob es sich um eine Ganzzahl handelt, können Sie verwenden:
if ((int)$c == $c)
return $c;
Das ist ein Tippfehler in Ihrem Ergebnis
function pythThm($a, $b){
$a2 = pow($a, 2);
$b2 = pow($b, 2);
$c = sqrt($a2 + $b2);
return (int)$c;
}
echo pythThm(3, 4);
<?php
function pythThm($a, $b){
$a2 = pow($a, 2);
$b2 = pow($b, 2);
$c = sqrt($a2 + $b2);
return $c;
}
echo pythThm(3, 4);
//outputs nothing, should be 5
?>