程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP數組關於數字鍵名的問題

PHP數組關於數字鍵名的問題

編輯:關於PHP編程

       以下是對PHP數組數字鍵名的幾點總結:

      鍵名長度只能在 int 長度范圍內,超過int 范圍後將會出現覆蓋等混亂情況

      在鍵名長度為 int 范圍內存取值時,PHP會強制將數字鍵名轉換為 int 數值型

      數字鍵名長度大於19位時,將變成 0

      鍵名正常長度時,字符串或數值類型一樣

      $i = 126545165;

      $arr['126545165'] = 'abc';

      $arr[126545165] = 'uio';

      var_dump($arr);

      echo '';

      var_dump(isset($arr[$i]));

    PHP數組關於數字鍵名的問題  三聯

      長度超過整型時,鍵名混亂<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PHByZSBjbGFzcz0="brush:java;">$i = 12312312312312; $arr['1000000000147483649'] = 'abc'; $arr[1000000000147483649] = 'uio'; var_dump($arr); echo '

      '; var_dump(isset($arr[$i]));

      長度超過20位時,鍵名將變成 0

      $i = 123123123123123123123123123123;

      var_dump($i);

      echo '';

      $arr[123123123123123123123123123123] = 'abc';

      $arr[strval(123123123123123123123123123123)] = 'abc';

      var_dump($arr);

      echo '';

      var_dump(isset($arr[$i]));

      echo '';

      var_dump(isset($arr[strval($i)]));

      echo '';

      var_dump(array_keys($arr));

      將變量直接作為鍵名存取,結果又有不同

      $i = 123123123123123;

      var_dump($i);

      echo '';

      $arr[$i] = 'abc';

      $arr[strval($i)] = 'abc';

      var_dump($arr);

      echo '';

      var_dump(isset($arr[$i]));

      echo '';

      var_dump(isset($arr[strval($i)]));

      echo '';

      var_dump(array_keys($arr));

      從上面的幾種測試來看:

      如果鍵名為數字,且范圍在 int 以內,字符串或者 int 不會對存取有什麼影響

      如果長度大於 int 時會自動轉化為 float ,再轉換進行存取出現各種混亂情況,甚至直接變成 0,所以最好是統一轉換為 string 類型

      $i = 123123123123123123123123123123;

      $j = '123123123123123123123123123123';

      $arr1[strval($i)] = 'abc';

      $arr2[$j] = 'abc';

      var_dump($arr1);

      echo '';

      var_dump($arr2);

    5.jpg

      所以在動態操作 PHP 數組時,如果不能確定鍵名是否會出現數字或者長度大於 int ,則統一將鍵名 strval 轉換為 字符串來操作最為穩妥

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved