Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка условия присутствия данных в массиве

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Проверка условия присутствия данных в массиве
vsbn
Отправлено: 26 Апреля, 2014 - 23:42:16
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Здравствуйте!
Написал простой скрипт для создания переменной, содержащей первую строку - заголовка страницы - Драйверы. Текст строки Драйверы выводится на экран посредством echo $title; Но при задании условия if($title=="Драйверы") строка Драйверы на экран не выводится. Хотя, если в первой строке файла страницы вместо текста Драйверы помещены цифровые символы, например, 1234567890, то они по условию на экран выводятся. Не могу понять, в чем тут дело. Что нужно изменить в условии if($title=="Драйверы"), чтобы на экран выводилась строка Драйверы?
PHP:
скопировать код в буфер обмена
  1. <?
  2.        /* Проверка условия не выполняется */
  3.  
  4. // Присвоить переменной значение имени файла страницы
  5. $page="drivers.php";
  6.  
  7. // Загрузить в массив файл страницы
  8. $title=file($page);
  9.  
  10. // Присвоить переменной текст первой строки файла
  11. $title=$title[0];
  12.  
  13. // Если переменная содержит строку
  14. if($title=="Драйверы")
  15.  
  16. // Вывести на экран текст строки
  17. echo $title;
  18. ?>

PHP:
скопировать код в буфер обмена
  1. <?
  2.         /* Проверка условия выполняется */
  3.  
  4. $page="drivers.php";
  5.  
  6. $title=file($page);
  7.  
  8. $title=$title[0];
  9.  
  10. if($title==1234567890)
  11.  
  12. echo $title;
  13. ?>

(Отредактировано автором: 29 Апреля, 2014 - 17:02:15)

 
 Top
Строитель Модератор
Отправлено: 27 Апреля, 2014 - 01:13:06
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 74 раз(а)




Нужно изменить расширение текстового файла(предварительно созданного в системе), в котором должна быть строка Драйверы
(если речь идёт о выводе из файла).

PHP:
скопировать код в буфер обмена
  1. <?
  2. // Присвоить переменной значение имени файла страницы
  3.  $page="drivers.txt";
  4.  // Загрузить в массив файл страницы
  5.  $title=file($page);
  6.  // Присвоить переменной текст первой строки файла
  7.  $title=$title[0];
  8.  // Если переменная содержит строку
  9.  if($title=="Драйверы")
  10.  // Вывести на экран текст строки
  11.  echo $title;
  12. ?>
 
 Top
vsbn
Отправлено: 28 Апреля, 2014 - 05:06:41
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Благодарю за участие в решении моей задачи. Ваше предложение проверил, но результат, как и ожидал, был прежний - проверка условия не выполнялась. Может быть задачу я изложил не достаточно понятно. Дело в том, что не было проблемы с выводом строки заголовка. Строка выводилась нормально посредством echo $title;, если заблокировать в скрипте строку: // if($title=="Драйверы"). Задача заключалась в том, чтобы условие if($title=="Драйверы") выполнялось, и только после этого происходил бы вывод на экран echo $title;
Сегодня попробовал посредством функции str_replace() "почистить" строку "Драйверы" в массиве $title=$title[0];
Дело в том, что при загрузке текста в массив в строках обычно появляются соответствующие символы \r \n \ После "очистки" строки "Драйверы" в массиве $title=$title[0]; он стал соответствовать условию if($title=="Драйверы"), поэтому условие стало выполняться. Теперь скрипт работает правильно.

(Отредактировано автором: 29 Апреля, 2014 - 17:30:52)

 
 Top
Hapson
Отправлено: 28 Апреля, 2014 - 09:12:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


vsbn
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $content = file('drivers.php');
  4. var_dump($content);
  5. ?>
  6.  

(Добавление)
vsbn пишет:
Дело в том, что при загрузке текста в массив в нем обычно появляются символы "\", "r\", "n\".

Недочитал до конца...
Наверное символы \r\n или \n.
Странно... откуда они? Улыбка
В notepad++ есть кнопочка - отображать все символы.


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
vsbn
Отправлено: 29 Апреля, 2014 - 04:10:28
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Здравствуйте!
Спасибо за внимание и рекомендацию.
Относительно служебных символов, используемых в строках PHP.
В конце первой строки (заголовка) файла страницы выполнен переход на новую (вторую) строку. Без этого не обойтись. В строке массива этот переход соответствует служебному символу \n. Присутствовал там и символ возврата курсора \r, так как без выполнения в скрипте хотя бы одной из указанных ниже строк, условие if($title=="Драйверы") не выполнялось:
PHP:
скопировать код в буфер обмена
  1.  
  2. // Заменить все символы возврата курсора символами \n
  3. $title[0]=str_replace("\r", "\n", $title[0]);
  4.  
  5. // Вырезать все переходы на новую строку
  6. $title[0]=str_replace("\n","", $title[0]);
  7.  

Можно также вместо использования в скрипте этих двух строк с функцией str_replace() изменить условие:

на
PHP:
скопировать код в буфер обмена
  1. if($title=="Драйверы\r\n")

и условие также будет выполняться.
При выводе строк в окне браузера служебные символы \r и \n не отображаются. Символ \ в строке заголовка отсутствовал. Он связан с кавычками. При выводе строк PHP кавычка в окне браузера отображается служебным символом \"
Нужно понимать, что при выполнения скрипта вывод строк PHP происходит не в текстовый редактор (Блокнот, Notepad++), а в окно браузера, в котором нет кнопки, чтобы в строках отобразились все служебные символы. Текстовые редакторы требуются лишь для написания текста и скриптов.

(Отредактировано автором: 29 Апреля, 2014 - 18:10:47)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB