2016-09-24 4 views
-2

Wert aus der Datenbank ist 63906xxxxxxx, die eine Telefonnummer ist.Now, wie diese Nummer genau 12 Ziffern zu ziehen, da ich eine 32-Bit-Version von PhP habe.Wie kann man die Zeichenkette der Telefonnummer am Ende in int oder float ohne .0 konvertieren?

Hier ist mein Code für den Erhalt als String: $ contactNum = $ ngo_cotactNo;

 $numeric_indexed_array = array_values($contactNum); 
     $n = $numeric_indexed_array[0]; 

dd ($ n); Ausgabe: "639063449729"

Hier ist mein Code für als String immer in int umgewandelt: $ contactNum = $ ngo_cotactNo;

 $numeric_indexed_array = array_values($contactNum); 
     $n = $numeric_indexed_array[0]; 
     $number = (int) $n; 
     dd($number); 

Ausgabe: 2147483647 String Ausgang zu schweben: 639063449729,0

Was ich will, ist die ganze Zahl 639.063.449.729, so dass ich es für die Weitergabe an die API für meine sms messaging.I've verwenden gewesen Ich arbeite seit gestern daran, aber kein Glück.

+1

Warum möchten Sie es von einer Zeichenfolge zu einem Int oder einem Float konvertieren? wahrscheinlich am besten, um es als eine Schnur zu behalten. – AndrewL

+0

sollte es als String bleiben – nogad

+0

Siehe die Diskussion hier http://dba.stackexchange.com/questions/124546/datatype-for-phone-number-varchar-int- or-bigint - es kann Gründe geben, warum es Sinn macht für Telefonnummern, die als anderer Datentyp als String gespeichert werden sollen – kerrin

Antwort

0

Konvertieren Sie keine Telefonnummern in Ganzzahlen oder Gleitkommazahlen. In einer 32-Bit-Umgebung gehen positive ganze Zahlen bis zu 2^31 hoch, was ein bisschen mehr als 2 000 000 000 ist. Es ist einfach unmöglich, eine zwölfstellige Zahl in 32 Bits zu platzieren. Verwenden Sie auch keine Floats. Floats mit einer begrenzten Genauigkeit, so dass Ihre Telefonnummer auf die nächste darstellbare Zahl gerundet werden kann. Bitte lassen Sie sie in einer Zeichenfolge.

Wikipedia sagt:

Im internationalen Telefonnetz, das Format von Telefonnummern von der ITU-T-Empfehlung E.164 standardisiert ist. Dieser Code gibt an, dass die gesamte Nummer 15 Ziffern oder kürzer sein sollte, und beginnt mit einem Länderpräfix.

+0

Problem gelöst: Ich habe den Datentyp einfach auf BIGINT in meiner Datenbank gesetzt. Danke an Ihre Antworten. Ich habe etwas daraus gelernt. – Chee

Verwandte Themen