Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.09.2017, 10:22
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Поиск значения переменной
Здравствуйте! Помогите, пожалуйста, есть кусок 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, 16.09.2017 в 11:08. Причина: Уточнение
Ответить с цитированием
  #2 (permalink)  
Старый 16.09.2017, 11:40
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

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
Ответить с цитированием
  #3 (permalink)  
Старый 16.09.2017, 11:57
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Нет, использовала даже trim на всякий случай.
Ответить с цитированием
  #4 (permalink)  
Старый 16.09.2017, 12:05
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Выводит:
Нет записи!
12345
Array ( [0] => 12345 )
В файле test.txt:
12345

Если указываю значение явно:
$userID = 12345;
работает.
Все к тому, что значение $userInfo['uid'] - показывает что-то, что не равно 12345, но ведь и в массиве и через echo показывает 12345.
Ответить с цитированием
  #5 (permalink)  
Старый 16.09.2017, 12:17
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

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);
Ответить с цитированием
  #6 (permalink)  
Старый 16.09.2017, 12:37
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Пробелов нет, но при записи используется перевод строки . PHP_EOL, но с этим переводом работает другой скрипт и там все нормально, другое дело, что значение переменной $userInfo['uid'], они чуть по разному получают.
Ответить с цитированием
  #7 (permalink)  
Старый 16.09.2017, 12:44
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Да это из-за . PHP_EOL, без записи без него все работает, но как мне записывать в столбик значения, чтобы, каждый раз записывалось с новой строки? Или писать первое значение, а добавлять ставя PHP_EOL перед $userID - PHP_EOL . $userID?

Последний раз редактировалось Sonya, 16.09.2017 в 12:45. Причина: Уточнение
Ответить с цитированием
  #8 (permalink)  
Старый 16.09.2017, 12:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Sonya,
file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)
Ответить с цитированием
  #9 (permalink)  
Старый 16.09.2017, 13:00
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Вчера так пробовала, но не получилось, сейчас попробую, может, что не так делала.
Ответить с цитированием
  #10 (permalink)  
Старый 16.09.2017, 13:23
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Спасибо работает!!! Что характерно вчера это пробовала (по мануалу), но это не работало, правда в процессе до этого код изменялся (сам код большой), а сегодня начала с исходного, возможно (да нет, наверняка), в процессе трансформации, была уже другая ошибка и та другая не давала корректное исполнение. Ещё раз большое спасибо! Плюс поставить ни Вам (в 101 раз), ни Nexus не получается, alert сообщает, что надо поставить ещё кому-то, ранее заходила в другие темы, читала и ставила плюс, причем темы напрямую меня не интересовали (для общего развития, но главное, чтобы можно + поставить), почему не ставится после этого не пойму, я же ставила уже ещё кому-то. Вообщем огромное спасибо !!!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение значения переменной в режиме реального времени The_FactioN jQuery 3 09.03.2016 12:20
Добавление значения к переменной Dark19 Общие вопросы Javascript 1 18.06.2014 16:43
Обновление значения переменной при выборе определенного value MaximS AJAX и COMET 4 24.12.2013 08:56
получение значения переменной из функции java script valdur2000 Общие вопросы Javascript 1 14.11.2013 20:22
Преобразование значения переменной в строку leny Общие вопросы Javascript 3 01.10.2011 22:34