before floatval: 373.92
accomodation_amount : x0x
is numeric
myvalue: 0
second: 149.568
Met dezelfde waarde als ik ze zelf invul in plaats van uit de database haal (dus met
$a = 373.92; ipv de $a = $details->accomodation_amount;), werkt het wel.
Ik begrijp er niets van. Wellicht is het iets heel simpels, maar ik tast volledig in het duister... kan iemand me helpen?
May be any scalar type. floatval() [color=#ff0000]should not be used on objects[/color], as doing so will emit an E_NOTICE level error and return 1.
Het is een object property, maar je zou voor de gein eens het melden + weergeven van foutmeldingen kunnen aanzetten om te kijken of er problemen zijn? Zet het volgende bovenaan je code:
The float value of the given variable. [color=#ff0000]Empty arrays return 0[/color], non-empty arrays return 1.
[color=#ff0000]Strings will most likely return 0[/color] although this depends on the leftmost characters of the string. The common rules of float casting apply.
Mogelijk betreft het hier dus een array of een string op een of andere manier?
Daarbij, wat is het precieze type van $details->accomodation_amount? Wat als je hier var_dump() op loslaat?
Wederom een vraagstuk waar het probleem niet het probleem is, maar een gebrek aan handvaten voor het verzamelen van informatie omtrent het "probleem".
Tijd om te gaan debuggen.
Voorlopige conclusie: floatval() gaat mis omdat je dit op een "niet simpel type" probeert uit te voeren.
Het probleem zit in de data van $details->accomodation_amount:
<?php
$a = 373.92; // $a is nu floating point scalar
var_dump($a === $details->accomodation_amount); // false
?>
Je moet op zoek naar de reden waarom de functie floatval() het getal 0 geeft in plaats van 373,92.
Dat kan zijn omdat omdat $details->accomodation_amount:
- een lege array is
- een string is dat niet met een getal begint
Zie: https://www.php.net/manual/en/function.floatval.php