2 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
你可以試試我的代碼:
$arr = ['item_one', '25' => 'item_two'];
$i = 0;
foreach($arr as $k => $v){
if($i != $k){
echo '[' . $k . '] is a custom key!';
}
$i++;
}

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
除了一些可能會(huì)或可能不會(huì)起作用的對(duì)象的詭計(jì)之外,我能看到的唯一解決方案是讓鴨子打字對(duì)你有用,而不是對(duì)你不利:
在數(shù)字前面添加一個(gè)空格或 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 >
簡(jiǎn)單地將鍵與元素內(nèi)的位置進(jìn)行比較是不可靠的:
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ù)手冊(cè):
鍵可以是整數(shù)或字符串。該值可以是任何類(lèi)型。
此外,還會(huì)發(fā)生以下關(guān)鍵轉(zhuǎn)換:
包含有效十進(jìn)制整數(shù)的字符串,除非數(shù)字前面有 + 號(hào),否則將被強(qiáng)制轉(zhuǎn)換為整數(shù)類(lèi)型。例如,鍵“8”實(shí)際上將存儲(chǔ)在 8 下。另一方面,“08”不會(huì)被強(qiáng)制轉(zhuǎn)換,因?yàn)樗皇怯行У氖M(jìn)制整數(shù)。
浮點(diǎn)數(shù)也被轉(zhuǎn)換為整數(shù),這意味著小數(shù)部分將被截?cái)?。例如,密鑰 8.7 實(shí)際上將存儲(chǔ)在 8 下。
布爾值也被轉(zhuǎn)換為整數(shù),即鍵 true 將實(shí)際存儲(chǔ)在 1 下,鍵 false 將存儲(chǔ)在 0 下。Null 將被轉(zhuǎn)換為空字符串,即鍵 null 將實(shí)際存儲(chǔ)在 "" 下。
數(shù)組和對(duì)象不能用作鍵。這樣做會(huì)導(dǎo)致警告:非法偏移類(lèi)型。
如果數(shù)組聲明中的多個(gè)元素使用相同的鍵,則僅使用最后一個(gè),因?yàn)樗衅渌囟紝⒈桓采w。
- 2 回答
- 0 關(guān)注
- 141 瀏覽
添加回答
舉報(bào)