使用PHP函数in_array和foreach循环中的数组

时间:2015-02-23 11:25:41

标签: php arrays

我正在使用逗号分隔的文本文件将一些值写入数组中,如此...

$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"
  }

1 个答案:

答案 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);

获取值的另一种方法是使用正则表达式。