2013-07-10 9 views
7

CASE # 1: मैं निम्नलिखित कोड है जो सही संख्यापूर्णांक प्रकार डाली मुद्दा

<?php 
    $integer = 10000000000; 
    $array = array($integer); 
    print_r($array[0]); //output = 1000000000 
?> 

CASE # 2: आउटपुट लेकिन जब मैं स्पष्ट रूप से एक ही नंबर डाली टाइप यह अलग उत्पादन देता है पूर्णांक

<?php 
    $integer = (int)10000000000; 
    $array = array($integer); 
    print_r($array[0]); //output = 1410065408 
?> 

CASE # 3: हैं मैं संख्या को 0 से छोटा करता हूं और इसे कास्ट करता हूं, फिर यह सही संख्या

<?php 
    $integer = (int)1000000000; 
    $array = array($integer); 
    print_r($array[0]); //output = 1000000000 
?> 
0 देता है

यह CASE # 2 में सही आउटपुट क्यों नहीं बना रहा है?

+0

ऐसा लगता है कि पूर्णांक प्रकार के लिए सीमा पार कर गए। एक पूर्णांक का अधिकतम मान 2147483647 है। इसे यहां पढ़ें: http://php.net/manual/en/language.types.integer.php – SamHuckaby

+0

हाँ, आपने इंटीजर प्रकार की सीमा पार कर ली है, इसलिए यह ज्ञात अधिकतम पूर्णांक में परिवर्तित होता है। – MurifoX

+0

यह ध्यान दिया जाना चाहिए कि पहला मामला "काम करता है" क्योंकि PHP इसे एक स्ट्रिंग में परिवर्तित करता है (या कुछ प्रकार जो संख्या को संभाल सकता है)। – SamHuckaby

उत्तर

4

आप अपने प्लेटफ़ॉर्म पर int के अधिकतम मूल्य से अधिक होने की संभावना रखते हैं।

Official PHP Doc से:

एक पूर्णांक के आकार, मंच पर निर्भर है, हालांकि के बारे में दो अरब की एक अधिकतम मूल्य सामान्य मूल्य (है कि 32 बिट पर हस्ताक्षर किए है) है। इंटीजर आकार स्थिर PHP_INT_SIZE का उपयोग करके निर्धारित किया जा सकता है, और का उपयोग कर अधिकतम मान PHP 5.5.0 और PHP 5.0.5 के बाद निरंतर PHP_INT_MAX का उपयोग कर किया जा सकता है।

32-बिट प्लेटफॉर्म के लिए:

पूर्णांकों हो सकता से -२१४७४८३६४८ 2147483647

64-बिट प्लेटफॉर्म के लिए:

पूर्णांकों -9223372036854775808 से 9223372036854775807 किया जा सकता है

+0

यूप जो अब समझ में आता है। मैंने इसके बजाय 'फ्लोट' का इस्तेमाल किया और यह सही संख्या आउटपुट करता था। धन्यवाद! –

+0

आपका स्वागत है, आपकी समस्या का समाधान करने में खुशी हुई। – anubhava

1

आप अपने पूर्णांक के अधिकतम आकार को बह रहे हैं दूसरा उदाहरण आपके पहले उदाहरण में, PHP स्वचालित रूप से चरम को पकड़ने के लिए float जैसे बड़े संख्यात्मक डेटा प्रकार का उपयोग करता है क्योंकि यह int के लिए बहुत बड़ा है। जब आप स्पष्ट रूप से int पर स्पष्ट रूप से इसे 2 में डाल देते हैं, क्योंकि यह अधिकतम आकार से बड़ा है, तो यह अधिकतम आकार में इसे छोटा करता है। उदाहरण के लिए 3 संख्या int में निहित पर्याप्त है। यदि आप इसे float पर कास्ट करने का प्रयास करते हैं तो यह सही परिणाम देगा।

<?php 
    $integer = (float)10000000000; 
    $array = array($integer); 
    print_r($array[0]); //output = 10000000000 
?> 

निरंतर PHP_INT_SIZE आपको बता देंगे क्या अधिकतम पर अपने php स्थापना है समर्थित int आकार।

0

एक पूर्णांक का अधिकतम मूल्य प्लेटफॉर्म पर निर्भर है, लेकिन यह लगभग 2 बिलियन है। मामला # 2 10 बिलियन है।

आप उपयोग एक नाव टाइपकास्ट चाहते हैं, यह एक बहुत अधिक सीमा होती है ...

संदर्भ:http://php.net/manual/en/language.types.integer.php

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