2 回答
TA貢獻1811條經(jīng)驗 獲得超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條經(jīng)驗 獲得超13個贊
除了一些可能會或可能不會起作用的對象的詭計之外,我能看到的唯一解決方案是讓鴨子打字對你有用,而不是對你不利:
在數(shù)字前面添加一個空格或 0。然后它將是 key " 25"or中的字符串"025",但如果您將其用作數(shù)字或?qū)⑵滢D(zhuǎn)換為其他地方的整數(shù),它將轉(zhuǎn)換為整數(shù)。
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 >
簡單地將鍵與元素內(nèi)的位置進行比較是不可靠的:
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'])
根據(jù)手冊:
鍵可以是整數(shù)或字符串。該值可以是任何類型。
此外,還會發(fā)生以下關(guān)鍵轉(zhuǎn)換:
包含有效十進制整數(shù)的字符串,除非數(shù)字前面有 + 號,否則將被強制轉(zhuǎn)換為整數(shù)類型。例如,鍵“8”實際上將存儲在 8 下。另一方面,“08”不會被強制轉(zhuǎn)換,因為它不是有效的十進制整數(shù)。
浮點數(shù)也被轉(zhuǎn)換為整數(shù),這意味著小數(shù)部分將被截斷。例如,密鑰 8.7 實際上將存儲在 8 下。
布爾值也被轉(zhuǎn)換為整數(shù),即鍵 true 將實際存儲在 1 下,鍵 false 將存儲在 0 下。Null 將被轉(zhuǎn)換為空字符串,即鍵 null 將實際存儲在 "" 下。
數(shù)組和對象不能用作鍵。這樣做會導致警告:非法偏移類型。
如果數(shù)組聲明中的多個元素使用相同的鍵,則僅使用最后一個,因為所有其他元素都將被覆蓋。
- 2 回答
- 0 關(guān)注
- 151 瀏覽
添加回答
舉報
