Почему не работает второе условие?
$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, время: 18:38. |