<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                > PHP不必聲明該變量的數據類型。 > PHP 會根據變量的值,自動把變量轉換為正確的數據類型。 > 在強類型的編程語言中,我們必須在使用變量前先聲明(定義)變量的類型和名稱。 ``` // PHP在定義變量時,不需要先聲明變量的類型 $test= 1; //整數型 $test= array(); //數組型 $test= “test”; //字符串型 // 例子 <?php   $a = null; $b = false;   if($a == $b){    echo “a和b相等!”;   }else{    echo “a和b不相等!”;   } // 結果輸出 “a和b相等!”   $a = ''; $b = 0;   if($a == $b){    echo “a和b相等!”;   }else{    echo “a和b不相等!”;   } // 結果輸出 “a和b相等!” ?> ``` 上述例子中,都輸出了 “a和b相等!”,這是因為php在變量比較的時候不會嚴格校驗變量的類型,無論變量是0 null ‘ ’還是false,比較的時候php都默認為空,整數值的話都是0,所以就相等了,如果要比較這些變量之間的不同,需要用“===”來判斷,三個等號表示完全相等,即變量值和類型都要相等。 不管是強類型還是弱類型,變量都有兩個屬性:類型和值;也就是說,弱類型的變量同樣有類型。可以使用php內置的gettype()方法來獲取變量類型。 ``` $a = ''; $b = 0; gettype($a); // string gettype($b) // integer ``` ### **弱語言類型的底層實現** > 所有變量使用同一種數據結構(zval)來保存,而這個結構同時表示PHP中的各種數據類型。 它不僅僅包含變量的值,也包含變量的類型。這就是PHP弱類型的核心 ``` PHP是弱語言類型,主要分為三類: 1、標量類型:integer、string、float、boolean 2、復合類型:array、object 3、特殊類型:resource、null ``` php的弱語言實現,主要跟變量的存儲結構有關。變量的值存儲到以下所示zval結構體中。 zval結構體定義在Zend/zend.h文件,其結構如下: ``` typedef struct _zval_struct zval; ... struct _zval_struct { /* Variable information */ zvalue_value value; /* value */ zend_uint refcount__gc; zend_uchar type; /* active type */ zend_uchar is_ref__gc; }; ``` PHP使用這個結構來存儲變量的所有數據。和其他編譯性靜態語言不同, PHP在存儲變量時將PHP用戶空間的變量類型也保存在同一個結構體中。這樣我們就能通過這些信息獲取到變量的類型。 zval結構體中有四個字段,其含義分別為: | 屬性名 | 含義 | 默認值 | | --- | --- |---| | refcount__gc | 表示引用計數 |1| | is_ref__gc| 表示是否為引用 |0| | value | 存儲變量的值 | | | type | 變量類型 | | zval結構體的type字段就是實現弱類型最關鍵的字段了,type的值可以為: IS_NULL、IS_BOOL、IS_LONG、IS_DOUBLE、IS_STRING、IS_ARRAY、IS_OBJECT和IS_RESOURCE 之一。 從字面上就很好理解,他們只是類型的唯一標識,根據類型的不同將不同的值存儲到value字段。 除此之外,和他們定義在一起的類型還有IS_CONSTANT和IS_CONSTANT_ARRAY。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看