Ho poca esperienza con le classi e gli oggetti. Lavoro in un linguaggio generico, PHP.
Stavo lavorando con un oggetto SimpleXML e ho incontrato un problema in cui stavo cercando di fare matematica con un elemento di quell'oggetto come $results->ProductDetail->{'Net'.$i};
Se faccio eco a quel valore, otterrei 0.53
ma quando ho provato a fare matematica con esso, è stato convertito in 0
C'è una ragione per cui un linguaggio non tipizzato non lo riconoscerebbe come float e lo gestisse come tale? Perché "echo" gestirlo come una stringa ma il calcolo matematico non riesce a convertirlo?
Esempio:
$xml='<?xml version="1.0" encoding="UTF-8" ?>';
$xml.='<Test>
<Item>
<Price>0.53</Price>
</Item>
</Test>';
$result=simplexml_load_string($xml);
var_dump($result->Item->Price);
echo '<br>';
echo $result->Item->Price;
echo '<br>';
echo 1+$result->Item->Price;
echo '<br>';
echo 1+(float)$result->Item->Price;
Output:
object(SimpleXMLElement)#4 (1) { [0]=> string(4) "0.53" }
0.53
1
1.53
Versione senza oggetto:
$no='.53';
echo 1+$no;
Output:
1.53
================================
Nota a margine:
PHP strpos()
non converte correttamente un ago intero $i
in una stringa.
$x=101; $i=1; if(strpos($x,"$i")===FALSE){echo $i." missing";}
e
$x=101; $i=1; if(strpos($x,$i)===FALSE){echo $i." missing";}
dare risultati diversi. Non voglio diventare un php hater, ma sto iniziando a perdere quella sensazione d'amore.