Я пишу некоторые значения в массив из текстового файла, разделенного запятыми, такого как...
$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"
}
Полагаю, вы забыли про пробелы или символы \n\r. Попробуйте использовать 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);
Другой способ получить значения - использовать регулярные выражения.
var_dump()
из OP?
print_r
и другое поведение in_array
для строк, не содержащее пробелов в середине.
var_dump($tokens);
Щелкните правой кнопкой мыши -> просмотрите исходный код и покажите нам, что у вас там