尋找在多維數組中獲得特定key =>值的計數。我有工作,即結果是正確的,但我似乎無法擺脫未定義的指數通知。未定義的PHP數組中的索引
$total_arr = array();
foreach($data['user'] as $ar) {
$total_arr[$ar['city']]++;
}
print_r($total_arr);
任何想法?我已經嘗試過foreach循環內的isset,但沒有快樂......
尋找在多維數組中獲得特定key =>值的計數。我有工作,即結果是正確的,但我似乎無法擺脫未定義的指數通知。未定義的PHP數組中的索引
$total_arr = array();
foreach($data['user'] as $ar) {
$total_arr[$ar['city']]++;
}
print_r($total_arr);
任何想法?我已經嘗試過foreach循環內的isset,但沒有快樂......
$total_arr = array();
foreach($data['user'] as $ar) {
if(array_key_exists($ar['city'],$total_arr) {
$total_arr[$ar['city']]++;
} else {
$total_arr[$ar['city']] = 1; // Or 0 if you would like to start from 0
}
}
print_r($total_arr);
正確答案。如果有人希望這個「短一點」,也可以稍微誤用三元運算符,並用'isset($ total_arr [$ ar ['city'])'替換整個if/else結構? $ total_arr [$ ar ['city'] ++:$ total_arr [$ ar ['city'] = 1;' – CBroe
'isset'通常總是比'array_key_exists'更快,並且您永遠無需擔心NULL '值在這裏,所以請用'isset'代替。 – h2ooooooo
奇怪的是,將'array_key_exists'替換爲'isset'會產生相同的未定義索引錯誤。感謝解決方案食人魔! – Solaris76
如果您的索引在被操作之前尚未初始化,PHP將會發出通知。要麼使用@
符號來取消通知,要麼使用isset()
與將爲您初始化索引值的塊結合使用。
可能有關:[PHP'isset()函數'函數行爲不端(http://stackoverflow.com/a/17330752/1438393) –