簡體   English   中英

如果key是變量,則找不到php array key

[英]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']確實會找到密鑰。 顯然,變量在可疑行中包含正確的字符串。

通過在第二個循環中更改變量名稱,我可以很容易地解決此問題,但是我想了解一下這里發生的事情。 您能告訴我為什么代碼不起作用嗎?

根據Marc B和Magic Lasso的出色建議,您還可以使用PHP函數trim從字符串中刪除空格字符。 是指向trim上的PHP手冊條目的鏈接。

同樣,您可以使用此方法的分支之一來僅從字符串的開頭修剪空白: ltrim

或者,您可以使用: rtrim在字符串末尾修剪空白

所陳述的問題是令人誤解的。 在數組中查找鍵的問題不是兩個foreach循環中使用了相同的變量名。 原因是所搜索的鍵無意中以空格字符作為前綴,並且在調試時看不到額外的空格。

這個問題的答案可能是:如果出現這種晦澀的“錯誤”,請檢查要搜索的鍵中是否有隱藏的字符。 實際上,@ Marc B在第一條評論中回答了該問題。

我將標題保持原樣,以便其他遇到此問題的人可以找到解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM