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

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

如何檢查PHP數組是關聯的還是連續的?

如何檢查PHP數組是關聯的還是連續的?

PHP
楊__羊羊 2019-07-13 16:36:59
PHP將所有數組視為關聯數組,因此沒有任何內置函數。有人能推薦一種比較有效的方法來檢查數組是否只包含數字鍵嗎?基本上,我希望能夠區分這一點:$sequentialArray = array('apple', 'orange', 'tomato', 'carrot');這是:$assocArray = array('fruit1' => 'apple',                      'fruit2' => 'orange',                      'veg1' => 'tomato',                      'veg2' => 'carrot');
查看完整描述

3 回答

?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

僅檢查數組是否具有非整數鍵(而不是數組是順序索引還是零索引):

function has_string_keys(array $array) {
  return count(array_filter(array_keys($array), 'is_string')) > 0;}

如果至少有一個字符串鍵,$array將被視為一個關聯數組。


查看完整回答
反對 回復 2019-07-13
?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

這個問題中的許多評論者不理解數組是如何在PHP中工作的。從數組文檔:

鍵可以是整數,也可以是字符串。如果鍵是整數的標準表示形式,它將被解釋為整數(即“8”將被解釋為8,而“08”將被解釋為“08”)。鍵中的浮點數被截斷為整數。索引數組類型和關聯數組類型在PHP中是相同的類型,可以包含整數和字符串索引。

換句話說,不存在“8”的數組鍵,因為它總是被(靜默地)轉換為整數8。因此,嘗試區分整數和數字字符串是不必要的。

如果您想要最有效的方法來檢查數組中的非整數鍵,而不需要復制數組的一部分(就像Array_key()那樣)或所有的(就像foreach那樣):

function keyedNext( &$arr, &$k){
    $k = key($arr);
    return next($arr);}for ($k = key(reset($my_array)); is_int($k); keyedNext($my_array,$k))
    $onlyIntKeys = is_null($k);

這是因為當前數組位置無效時,key()返回NULL,而NULL永遠不會是有效的鍵(如果您嘗試使用NULL作為數組鍵,它將被靜默地轉換為“)。


查看完整回答
反對 回復 2019-07-13
  • 3 回答
  • 0 關注
  • 904 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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