Поиск значения переменной
Здравствуйте! Помогите, пожалуйста, есть кусок PHP-кода:
$userID = $userInfo['uid']; $file = file("test.txt"); if(in_array($userID,$file)){ echo "Есть запись!<br />"; echo $userID . "<br />"; print_r($file); }else{ echo "Нет записи!<br />"; echo $userID . "<br />"; print_r($file); } В файле test.txt записываются в столбик именно значение $userID методом $_POST, но потом при поиске его вышеуказанным кодом, он не находится. Причем в массиве он выводится print_r($file), также показывается через echo $userID. Например, $userID = 12345, запись в файле соответственно 12345, echo $userID - выводит 12345, print_r($file) - выводит Array ( [0] => 12345 ). Т.е. все к тому чтобы запись была найдена, но запись такой код не находит. Причем, если указать значение явно if(in_array('12345',$file)){ echo "Есть запись!<br />"; echo $userID . "<br />"; print_r($file); }else{ echo "Нет записи!<br />"; echo $userID . "<br />"; print_r($file); } то запись находится, но через переменную никак. В чем может быть причина? |
Sonya, пробелов у вас в userID нет?
<?php $haystack=array('12345','23456','34567','45678'); $needle='12345 '; var_dump(in_array($needle,$haystack));//false var_dump(in_array(trim($needle),$haystack));//true |
Нет, использовала даже trim на всякий случай.
|
Выводит:
Нет записи! 12345 Array ( [0] => 12345 ) В файле test.txt: 12345 Если указываю значение явно: $userID = 12345; работает. Все к тому, что значение $userInfo['uid'] - показывает что-то, что не равно 12345, но ведь и в массиве и через echo показывает 12345. |
Sonya, в файле в конце или начале строк пробелов нет?
<?php $haystack=array('12345 ','23456','34567','45678'); $needle='12345'; $result=false; foreach($haystack as $val){ if(trim($val)==$needle){ $result=true; break; } }; var_dump($result); |
Пробелов нет, но при записи используется перевод строки . PHP_EOL, но с этим переводом работает другой скрипт и там все нормально, другое дело, что значение переменной $userInfo['uid'], они чуть по разному получают.
|
Да это из-за . PHP_EOL, без записи без него все работает, но как мне записывать в столбик значения, чтобы, каждый раз записывалось с новой строки? Или писать первое значение, а добавлять ставя PHP_EOL перед $userID - PHP_EOL . $userID?
|
Sonya,
file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) |
Вчера так пробовала, но не получилось, сейчас попробую, может, что не так делала.
|
Спасибо работает!!! Что характерно вчера это пробовала (по мануалу), но это не работало, правда в процессе до этого код изменялся (сам код большой), а сегодня начала с исходного, возможно (да нет, наверняка), в процессе трансформации, была уже другая ошибка и та другая не давала корректное исполнение. Ещё раз большое спасибо! Плюс поставить ни Вам (в 101 раз), ни Nexus не получается, alert сообщает, что надо поставить ещё кому-то, ранее заходила в другие темы, читала и ставила плюс, причем темы напрямую меня не интересовали (для общего развития, но главное, чтобы можно + поставить), почему не ставится после этого не пойму, я же ставила уже ещё кому-то. Вообщем огромное спасибо !!!
|
Часовой пояс GMT +3, время: 04:56. |