[英]php array key not found if key is a variable
我認為這不應該發生,但是我找不到為什么這行不通。 我正在檢查用戶輸入是否有重復的選擇。 $into_fields_count
是數據庫字段的數組,映射到用戶選擇的次數(db field => count), $into_fields_dupes
收集重復項。
foreach ( $into_fields_count as $field => $count )
{
if ( $count > 1 ) $into_fields_dupes[$field] = $count;
}
if ( $into_fields_dupes )
{
// construct error message
$error = ERR_MAP_DUPLICATES;
foreach ( $into_fields_dupes as $field => $count )
{
$error .= "\n" . 'Datenbankfeld "' . $artikel_fields[$field] . '" wurde ' . $count . ' mal gewählt.';
}
$error .= "\nBitte korrigieren Sie den Fehler vor dem Import!";
throw new Exception($error);
}
問題是在兩個foreach
數組中使用相同的變量$field
。 在第二個循環中,嘗試獲取$artikel_fields[$field]
會引發通知
Notice: Undefined index: bestell_nr in /my/file/path...
但是,在此代碼之后測試$artikel_fields['bestell_nr']
確實會找到密鑰。 顯然,變量在可疑行中包含正確的字符串。
通過在第二個循環中更改變量名稱,我可以很容易地解決此問題,但是我想了解一下這里發生的事情。 您能告訴我為什么代碼不起作用嗎?
所陳述的問題是令人誤解的。 在數組中查找鍵的問題不是兩個foreach
循環中使用了相同的變量名。 原因是所搜索的鍵無意中以空格字符作為前綴,並且在調試時看不到額外的空格。
這個問題的答案可能是:如果出現這種晦澀的“錯誤”,請檢查要搜索的鍵中是否有隱藏的字符。 實際上,@ Marc B在第一條評論中回答了該問題。
我將標題保持原樣,以便其他遇到此問題的人可以找到解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.