Почему не работает второе условие?
$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] не существует |
Потому, что isset($arr2) всегда равен true, так как данная переменная объявлена, существует. А проверять надо не наличие массива, а его элементов, иначе зачем этот цикл?
|
А здесь почему не работает?
$n = array(0.57, '21.5', 40.52);
if(in_array(21.5, $n, true)){
echo 'Значение 21.5 найдено';
}
else{
'Ничего не найдено';
}
|
Цитата:
|
У вас эксклюзивный РНР? У меня ответ будет только таким:
Элемент $arr2[0] существует Элемент $arr2[1] существует Элемент $arr2[2] существует Элемент $arr2[3] существует Элемент $arr2[4] существует Элемент $arr2[5] существует Элемент $arr2[6] существует Элемент $arr2[7] существует Элемент $arr2[8] существует Элемент $arr2[9] существует Это и без "прокрутки" цикла ясно. |
Цитата:
|
Ошибки нету
|
Я нашёл ошибку
|
Цитата:
21.5 в массиве нет, ибо заказано строгое сравнение, а массив содержит строку "21.5", а не float 21.5, значит нужно вывести "Не найдено". Но кто же ее будет выводить, если она у вас болтается просто как строка условия else? echo in_array(21.5, $n, true) ? 'Значение 21.5 найдено' : 'Ничего не найдено'; |
| Часовой пояс GMT +3, время: 22:07. |