Jump to content
php.lv forumi

gļuks ar konvertēšanu?


Vebers

Recommended Posts

Ir piem. mobilā tel nr. : 37125553333.

un vaig viņam nogriezt to 2 nost, kurš seko uzreiz pēc 371.

Kad 2 ir nogriezts, tad šim nr. ir atkal jābūt integer.

$nr=37125553333;
$nr=substr($nr, 0, 3).substr($nr, 4);
settype($nr, 'integer');
var_dump($nr); // Tas atgriež parāda: int(2147483647)

 

Tas kāds gļuks vai es kaut ko nesaprotu?

Link to comment
Share on other sites

php integeri ir 32-bitīgi. Tas nozīmē, ka tie var pieņemt vērtības no -2^31 .. 2^31-1 = -2147483648 .. +2147483647.

Pats redzi, ka 3715553333 ir > +2147483647 tāpēc php to uzliek uz maksimālo integera vērtību.

Risinājums - neglabā kā integeru, bet glabā kā stringu. Ja nu ļoti, ļoti vajag kā skaitlisku vērtību glabāt, tad glabā NUMBER(..) tipa kolonnā. Taču php pusē gan neoperē ar to kā ar skaitli.

Link to comment
Share on other sites

×
×
  • Create New...