[英]PHP in_array not behaving as expected
這是我的功能:
function checkArray($color,$file) {
$color = trim($color);
$settings = getSettings($file,1);
if (in_array($color,$settings)) return true;
else return false;
}
在這種情況下,$ settings是一個數組:
Array
(
[0] => Black
[1] => Blackpol
[2] => Blk
[3] => Blue
[4] => Bronz
[5] => Bronze
[6] => Brz
)
我有此函數循環幾次,每次更改$ color參數。 樣本值是“ Black”,“ Blue”等。長話短說,checkArray()應該很少返回false。
但是,它每次都返回錯誤,並且我無法為我的生命找出原因。 我嘗試了不區分大小寫的搜索,修剪,打印單個輸出並比較字符串(“ Black”與“ Black”)...我對php或數組不是陌生的,但我不知道為什么這可能會返回false。 請幫助!
$ settings的PRINT_R(在if語句之前)
Array
(
[0] => Black
[1] => Blackpol
[2] => Blk
[3] => Blue
[4] => Bronz
[5] => Bronze
[6] => Brz
[7] => Bz
[8] => Cherry
[9] => Gold
[10] => Gun
[11] => Gunmet
[12] => Gunmetal
[13] => Pol
[14] => Poly
[15] => Quentin
[16] => Rootbeer
[17] => Vis
)
VAR DUMP OF $ color(在if語句之前)
string(5) "Black"
到了那里,字符串中有空格。 刪除它們,您就可以了。
設置數組中的值后面可能有換行符嗎?
檢查您的getSettings函數,並確保在那里也修剪值。
好吧, print_r
輸出表明每行最后都包含一個\\n
換行符。 使用$file
還可以指示您從文件中讀取它。 如果是這樣,您只需要調整輸入即可。
您可以使用以下方法修改getSettings
以讀取它:
file($file, FILE_IGNORE_NEW_LINES)
或在色彩測試功能中對其進行后處理:
$settings = array_map("trim", $settings);
確保您沒有混合編碼。
這可能是一個解決方案:
in_array( mb_strtolower($color, "UTF-8"), $settings)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.