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++;
}

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 將實際存儲在 "" 下。
數組和對象不能用作鍵。這樣做會導致警告:非法偏移類型。
如果數組聲明中的多個元素使用相同的鍵,則僅使用最后一個,因為所有其他元素都將被覆蓋。
- 2 回答
- 0 關注
- 129 瀏覽
添加回答
舉報