Po pierwsze formatuj ten kod sensownie. Nie bierz tego do siebie, ale ten kod wygląda jak psu z gardła wyjęty. Raz stawiasz spację po nawiasie, a linijkę niżej nie.. raz if'y piszesz tak, raz inaczej. pobierz jakieś sensowne IDE, które ma autoformatowanie kodu, typu PHPStorm (jest darmowa wersja EAP, skrót ctrl + alt + l).
Po drugie, co to u diabła za nazwa funkcji checkIfHow
- "sprawdźJeżeliJak"?
Po trzecie, co to za magiczne wartości: -1, -2, -666? Użyj stałych:
class VehicleType {
public const CAR = 1;
public const HELICOPTER = 2;
public const PLANE = 3;
}
Po czwarte co to za jakieś używanie xor
, and
i or
? Pisz Pan normalnie: ^
, &&
, ||
.
Po piąte używaj typów:
public function checkIfHow(int $price, string $how): int
Po szóste formatuj if'y w jednolity sposób, czyli zawsze tak:
if ($foo === 10) {
return 'coś';
}
nigdy tak:
if ($foo === 10) return 'coś';
I w końcu odpowiadając na Twoje pytanie, to prawdopodobnie masz input type text. Jeżeli tak, to zmienna przychodzi jako string, a is_int
dla stringa (nawet jak to jest "10", czy "3.14") zwróci false, bo to string, a nie int. Rozwiązania:
$var = "10";
if (is_numeric($var)) {
$var = (int) $var;
}
lub nawet lepsze użyj https://laravel.com/docs/5.7/validation jak chcesz walidować formularz.