我认为这不应该发生,但我找不到为什么这不起作用。我正在检查用户输入是否有重复的选择。 $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);
}
问题是在$field
个数组中使用相同的变量foreach
。在第二个循环中,尝试获取$artikel_fields[$field]
的值会引发通知
Notice: Undefined index: bestell_nr in /my/file/path...
但是,在此代码之后测试$artikel_fields['bestell_nr']
确实找到了密钥。显然,变量在可疑行中包含正确的字符串。
我可以通过更改第二个循环中的变量名来轻松解决这个问题,但我想了解一下这里发生的事情。你能告诉我为什么代码不起作用吗?
答案 0 :(得分:0)
根据Marc B和Magic Lasso的优秀建议,您还可以使用PHP函数trim
从字符串中删除空白字符。 Here是trim
上的PHP手册条目的链接。
此外,您可以使用此方法的一个分支来从字符串的开头修剪空白: ltrim
或者您可以使用以下方法修剪字符串末尾的空白: rtrim
答案 1 :(得分:0)
所述问题具有误导性。在数组中查找键的问题不是在两个foreach
循环中使用了相同的变量名;原因是搜索到的密钥无意中以空格字符为前缀,调试时没有看到额外的空间。
问题的答案可能是:如果发生这种模糊的“错误”,请检查您要搜索的密钥中的隐藏字符。实际上@Marc B在第一条评论中回答了这个问题。
我将按原样保留标题,以便有此问题的其他人可以找到解决方案。