Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Почему не работает второе условие? (https://javascript.ru/forum/server/66713-pochemu-ne-rabotaet-vtoroe-uslovie.html)

DivMan 05.01.2017 10:20

Почему не работает второе условие?
 
$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] не существует

laimas 05.01.2017 10:40

Потому, что isset($arr2) всегда равен true, так как данная переменная объявлена, существует. А проверять надо не наличие массива, а его элементов, иначе зачем этот цикл?

DivMan 05.01.2017 10:41

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

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

if(in_array(21.5, $n, true)){
	echo 'Значение 21.5 найдено';
}
else{
	'Ничего не найдено';
}

DivMan 05.01.2017 10:44

Цитата:

Сообщение от laimas (Сообщение 439729)
Потому, что isset($arr2) всегда равен true, так как данная переменная объявлена, существует. А проверять надо не наличие массива, а его элементов, иначе зачем этот цикл?

Но в примере, ответ совсем другой

laimas 05.01.2017 10:47

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

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

Это и без "прокрутки" цикла ясно.

laimas 05.01.2017 10:49

Цитата:

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

А как оно должно работать если в коде ошибка?

DivMan 05.01.2017 10:54

Ошибки нету

DivMan 05.01.2017 10:55

Я нашёл ошибку

laimas 05.01.2017 10:58

Цитата:

Сообщение от DivMan
Ошибки нету

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

echo in_array(21.5, $n, true) ? 'Значение 21.5 найдено' : 'Ничего не найдено';


Часовой пояс GMT +3, время: 18:38.