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]   

> Без описания
Aricus
Отправлено: 10 Января, 2015 - 13:37:30
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Апр. 2014  


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




Мне нужно сформулировать условие: если значение переменной присутствует среди значений массива.
Для этого я использовал функцию:
PHP:
скопировать код в буфер обмена
  1. $isWatched = array_search($qListNumAccepted[$numThisQ], $myWatched);

Результатом является пустота, если переменной среди значений нет, и число, если она там есть. До этого момента всё правильно, но при формировании условия
PHP:
скопировать код в буфер обмена
  1. if ((isset($isWatched)) && ($isWatched !== ''))

оказывается, что любые варианты удовлетворяют условию, вне зависимости от наличия переменной в массиве.
Что ещё более странно, противоположному условию
PHP:
скопировать код в буфер обмена
  1. if ((isset($isWatched)) && ($isWatched == ''))

тоже удовлетворяют любые варианты.

(Отредактировано автором: 10 Января, 2015 - 13:41:30)

 
 Top
teddy
Отправлено: 10 Января, 2015 - 13:41:49
Post Id


Участник


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


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




 
 Top
LIME
Отправлено: 11 Января, 2015 - 06:31:07
Post Id


Активный участник


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


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




PHP:
скопировать код в буфер обмена
  1. $isWatched = in_array($qListNumAccepted[$numThisQ], $myWatched);

PHP:
скопировать код в буфер обмена
  1. if ((isset($isWatched)) && ($isWatched !== '')) //true

PHP:
скопировать код в буфер обмена
  1. if ((isset($isWatched)) && ($isWatched == '')) //true

Ха-ха
 
 Top
andrewkard
Отправлено: 11 Января, 2015 - 12:31:18
Post Id


Участник


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


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




Aricus
пробуйте так:
PHP:
скопировать код в буфер обмена
  1. if ($isWatched!=NULL)
  2. {
  3.     echo "значение переменной присутствует среди значений массива";
  4. }
 
 Top
Sail
Отправлено: 12 Января, 2015 - 10:33:56
Post Id



Участник


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


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




Aricus, функция array_search() может вернуть одно из трёх значений.
Вот простой демонстрационный пример:
PHP:
скопировать код в буфер обмена
  1. $arr = array(1, 2, 3, 4);
  2. // есть элемент в массиве
  3. $result[] = array_search(3, $arr); // индекс элемента
  4. // нет элемента в массиве
  5. $result[] = array_search(5, $arr); // false
  6. // ошибка в передаваемых параметрах
  7. $result[] = array_search(1, 2); // null
  8.  
  9. var_dump($result);
  10.  
  11. foreach($result as $value) {
  12.     if($value === false) {
  13.         $str = 'Не найден элемент в массиве';
  14.     } elseif(is_null($value)) {
  15.         $str = 'Неверные параметры, переданные функции array_search()';
  16.     } else {
  17.         $str = 'Индекс найденного элемента: '.$value;
  18.     }
  19.     echo '<br>'.$str;
  20. }
  21.  
 
 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