2009-12-04 13 views

उत्तर

23

मुझे लगता है कि इनपुट एक स्ट्रिंग है?

$str = "01"; 
$anInt = intval($str); 

आप सोच सकते हैं कि प्रमुख 0 का मतलब होगा इस अष्टाधारी के रूप में व्याख्या की है कई अन्य भाषाओं/एपीआई के रूप में,। हालांकि अंतराल के लिए दूसरा तर्क आधार है। इसके लिए डिफ़ॉल्ट मान 10 है। इसका मतलब है 09-> 9। intval पृष्ठ पर पहली टिप्पणी देखें, जिसमें कहा गया है कि मूल कटौती आप केवल तभी होती है जब आप बेस के रूप में 0 पास करते हैं। आप सामान्य नियमित अभिव्यक्ति समाधान उपयोग करना चाहते हैं

+0

यदि इनपुट को इंट के रूप में माना जाता है, तो इसे ऑक्टल के रूप में संभाला जाएगा। (इसलिए 09-> 0) – erenon

+0

@erenon, मेरा अपडेट देखें। –

+0

करें '(int) $ str; 'इसके बजाय। यह 'intval()' से 4x तेज है। –

0
$str = "05"; 
$last = $str[1]; 
+0

अंतराल() समाधान इस मामले में अधिक विश्वसनीय है, क्योंकि यह "00 9" भी पकड़ सकता है। –

+0

सच। लेकिन मेरा समाधान तेजी से है, और टीएस ने 00 9 :-) – Fortega

1
$old_nums = array("01","02","03"); 

foreach($old_nums as $k => $v) { 

ltrim($v,"0"); 

} 
+0

के बारे में कुछ भी नहीं कहा है जो ओवरकिल –

+0

है जो पूरी तरह से निर्भर करता है कि संख्या कहां से आ रही है, और वे कैसे संग्रहीत हैं, है ना? इस उदाहरण में मैंने इसे केवल डौग टी के विकल्प के रूप में पेश किया है - पहले ही सबमिट किया गया है और स्पष्ट रूप से सटीक और कुशल उत्तर है। –

1
$x="01"; 
$x=+$x; 

$x="02"; 
$x=+$x; 

... 

या

$x=+"01"; 

दोनों पूर्णांक, और स्ट्रिंग

0

लिए काम करना चाहिए: के/[0] ([0-9])/\ 1/'(के रूप में उपयुक्त लंगर में जोड़ने)

0
$str='05'; 

if(strpos($str,'0')==0 && strpos($str,'0') != false){ 
$new = intval(substr($str,1)); 
} 
0

बजाय (int)$str; करो। यह intval() से 4x तेज है।

संबंधित मुद्दे