这是我的功能:
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参数。样本值为“黑色”,“蓝色”等。长话短说,checkArray()应该返回false很少次。
但是,它每次都会返回错误,我无法为我的生活找出原因。我尝试了不区分大小写的搜索,修剪,打印单个输出和比较字符串(“黑色”与“黑色”)...我不是新的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"
答案 0 :(得分:2)
你去了,你的字符串中有空格。删除它们你就没事了。
答案 1 :(得分:1)
可能是设置数组中的值后面有换行符吗?
检查你的getSettings函数,确保你也修剪它们。
答案 2 :(得分:1)
嗯,print_r
输出表明每一行最后都包含一个额外的\n
换行符。 $file
的使用也表示您从文件中读取它。如果是这样,你只需要修剪输入。
您可以使用以下内容调整getSettings
以进行阅读:
file($file, FILE_IGNORE_NEW_LINES)
或者在色彩测试功能中对其进行后处理:
$settings = array_map("trim", $settings);
答案 3 :(得分:0)
确保您没有混合编码。
这个可能是一个解决方案:
in_array( mb_strtolower($color, "UTF-8"), $settings)