亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何檢查默認情況下設置了(int)數組鍵還是自定義(int)鍵?

如何檢查默認情況下設置了(int)數組鍵還是自定義(int)鍵?

PHP
翻閱古今 2022-07-16 18:19:44
我有一個數組:$arr = ['item_one', 'item_two'];默認情況下,這些鍵是0,1如果我轉儲該數組,它看起來像這樣:array(2) { [0]=> string(8) "item_one" [1]=> string(8) "item_two" }我不想將第一個$arr默認密鑰設置為,然后確定它是設置而不是自動生成的事實:125$arr = ['item_one', '25' => 'item_two'];我試過這個:foreach($arr as $k => $v){    if(is_int($k)){        echo '[' . $k . '] is not a custom key!'.    }}但輸出是:[0] is not a custom key![25] is not a custom key!因為顯然兩個鍵都是(int).我如何獲得25不輸出該消息的密鑰?
查看完整描述

2 回答

?
四季花海

TA貢獻1811條經驗 獲得超5個贊

你可以試試我的代碼:


$arr = ['item_one', '25' => 'item_two'];

$i = 0;

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

    if($i != $k){

        echo '[' . $k . '] is a custom key!';

    }

    $i++;

}


查看完整回答
反對 回復 2022-07-16
?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

除了一些可能會或可能不會起作用的對象的詭計之外,我能看到的唯一解決方案是讓鴨子打字對你有用,而不是對你不利:


在數字前面添加一個空格或 0。然后它將是 key " 25"or中的字符串"025",但如果您將其用作數字或將其轉換為其他地方的整數,它將轉換為整數。


php > $arr = ['item_one', '025' => 'item_two'];

php > foreach($arr as $k => $v) {

php { if(is_int($k)) {

php { echo '['.$k.'] is not a custom key!';

php { }

php { }

[0] is not a custom key!

php >

簡單地將鍵與元素內的位置進行比較是不可靠的:


php > $arr = ['item_one','25'=>'item_two','2'=>'item_three'];

php > $i=0;

php > foreach($arr as $k=>$v) {

php { if($i != $k) {

php { echo '['.$k.'] is a custom key';

php { }

php { $i++;

php { }

[25] is a custom key

php >


(note:  missed $arr['2'])

根據手冊

鍵可以是整數或字符串。該值可以是任何類型。

此外,還會發生以下關鍵轉換:

  • 包含有效十進制整數的字符串,除非數字前面有 + 號,否則將被強制轉換為整數類型。例如,鍵“8”實際上將存儲在 8 下。另一方面,“08”不會被強制轉換,因為它不是有效的十進制整數。

  • 浮點數也被轉換為整數,這意味著小數部分將被截斷。例如,密鑰 8.7 實際上將存儲在 8 下。

  • 布爾值也被轉換為整數,即鍵 true 將實際存儲在 1 下,鍵 false 將存儲在 0 下。Null 將被轉換為空字符串,即鍵 null 將實際存儲在 "" 下。

  • 數組和對象不能用作鍵。這樣做會導致警告:非法偏移類型。

如果數組聲明中的多個元素使用相同的鍵,則僅使用最后一個,因為所有其他元素都將被覆蓋。


查看完整回答
反對 回復 2022-07-16
  • 2 回答
  • 0 關注
  • 129 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號