Javascript.RU

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

Почему не работает второе условие?
$arr2 = array(5 => 1,2,3);



for($i = 0; $i < 10; $i++){
	if(isset($arr2)){
		//echo "Элемент " . $arr2[$i] . " существует<br>";
		echo "Элемент \$arr2[$i] существует<br>";
	}
	
	else{
		//echo "Элемент " . $arr2[$i] . " не существует<br>";
		echo "Элемент \$arr2[$i] не существует<br>";
	}
}


Должно быть так

Элемент $arr2[0] не существует

Элемент $arr2[1] не существует

Элемент $arr2[2] не существует

Элемент $arr2[3] не существует

Элемент $arr2[4] не существует

Элемент $arr2[5] существует

Элемент $arr2[6] существует

Элемент $arr2[7] существует

Элемент $arr2[8] не существует

Элемент $arr2[9] не существует
Ответить с цитированием
  #2 (permalink)  
Старый 05.01.2017, 10:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Потому, что isset($arr2) всегда равен true, так как данная переменная объявлена, существует. А проверять надо не наличие массива, а его элементов, иначе зачем этот цикл?
Ответить с цитированием
  #3 (permalink)  
Старый 05.01.2017, 10:41
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

А здесь почему не работает?

$n = array(0.57, '21.5', 40.52);

if(in_array(21.5, $n, true)){
	echo 'Значение 21.5 найдено';
}
else{
	'Ничего не найдено';
}
Ответить с цитированием
  #4 (permalink)  
Старый 05.01.2017, 10:44
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Сообщение от laimas Посмотреть сообщение
Потому, что isset($arr2) всегда равен true, так как данная переменная объявлена, существует. А проверять надо не наличие массива, а его элементов, иначе зачем этот цикл?
Но в примере, ответ совсем другой
Ответить с цитированием
  #5 (permalink)  
Старый 05.01.2017, 10:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

У вас эксклюзивный РНР? У меня ответ будет только таким:

Элемент $arr2[0] существует
Элемент $arr2[1] существует
Элемент $arr2[2] существует
Элемент $arr2[3] существует
Элемент $arr2[4] существует
Элемент $arr2[5] существует
Элемент $arr2[6] существует
Элемент $arr2[7] существует
Элемент $arr2[8] существует
Элемент $arr2[9] существует

Это и без "прокрутки" цикла ясно.
Ответить с цитированием
  #6 (permalink)  
Старый 05.01.2017, 10:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от DivMan
А здесь почему не работает?
А как оно должно работать если в коде ошибка?
Ответить с цитированием
  #7 (permalink)  
Старый 05.01.2017, 10:54
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Ошибки нету
Ответить с цитированием
  #8 (permalink)  
Старый 05.01.2017, 10:55
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Я нашёл ошибку
Ответить с цитированием
  #9 (permalink)  
Старый 05.01.2017, 10:58
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от DivMan
Ошибки нету
Точно?
21.5 в массиве нет, ибо заказано строгое сравнение, а массив содержит строку "21.5", а не float 21.5, значит нужно вывести "Не найдено". Но кто же ее будет выводить, если она у вас болтается просто как строка условия else?

echo in_array(21.5, $n, true) ? 'Значение 21.5 найдено' : 'Ничего не найдено';
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает подключенный скрипт?? ivt22 Элементы интерфейса 1 04.01.2016 10:59
почему один вызов load работает, а другой - нет kravru jQuery 1 16.09.2013 20:51
cookie почему не работает скрипт Alven Общие вопросы Javascript 1 01.09.2013 03:17
Помогите с javascript (Почему не работает) remus Оффтопик 9 09.06.2010 11:18
Почему не работает функция? Vitaly jQuery 10 31.07.2009 17:01