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

來源:互聯網
上載者:User

   以下是對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]));

  長度超過整型時,鍵名混亂<喎?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);

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.