我正在使用逗号分隔的文本文件将一些值写入数组中,如此...
$tokenFile = "tokens.txt";
$tokenSet = file_get_contents($tokenFile);
$tokenValues = explode(',', $tokenSet);
foreach($tokenValues as $value) {
$tokens[] = "$value";
};
我用print_r($tokens);
Array ( [0] => token1 [1] => token2 [2] => token3 )
这一切都很好,正是我想要的,我想,但是如果我使用in_array
检查其中一个值,我就得不到我想要的结果。
if (in_array('token2', $tokens)) {
echo "token found!";
};
如果我创建我的$tokens
数组,则可以正常工作。
$tokens = array('token1', 'token2', 'token3')
再次使用print_r($tokens)
我得到..
Array ( [0] => token1 [1] => token2 [2] => token3 )
两个数组看起来完全相同。我错过了什么。
更新所以数组不同
使用var_dump我从foreach循环中获取以下数组
array(4) {
[0]=>
string(6) "token1"
[1]=>
string(8) "token2"
[2]=>
string(8) "token3"
}
我从另一个阵列得到了这个。
array(4) {
[0]=>
string(6) "token1"
[1]=>
string(6) "token2"
[2]=>
string(6) "token3"
}
答案 0 :(得分:1)
我想你忘了空格或\ n \ r \ n符号。尝试使用var_dump()
代替print_r
来查看字符串的差异。并且不要忘记使用trim()
函数删除字符串两端的额外符号。
$tokenFile = "tokens.txt";
$tokenSet = file_get_contents($tokenFile);
$tokenValues = explode(',', $tokenSet);
foreach($tokenValues as $value) {
$tokens[] = trim($value);
};
var_dump($tokens);
获取值的另一种方法是使用正则表达式。