Интересный вопрос по PHP
марта 17, 2010 PHP
Доброго времени суток!
Да давненько я ничего не писал, но я думаю все прекрасно понимают, что совмещая работу и учебу, остается очень мало времени на личные дела. Но данная заметка не об этом. Сегодня хотел бы показать Вам очень интересный вопрос из тестирования по PHP 5, вопрос больше на внимательность и знание синтаксиса языка.
Вопрос такой: Какой результат выполнения данного программного кода?
Программный код:
$arParams = array("Первый параметр","Второй параметр","Третий параметр"); $count = count($arParams); if($count = 0) echo 0; else echo "Количество параметров: ".$count;
Варианты ответа:
- 0
- Количество параметров: 3
- Количество параметров: 0
Многие будут говорить, что задача элементарная, с этим я конечно спорить не стану, но до чего же красивая и логичная. А еще мне она очень понравилась тем, что сразу показывает врубается ли человек в синтаксис PHP и тем, что это просто хорошая задача на внимательность.
А Вы знаете какие-нибудь, интересные задачки из этой же серии? Было бы очень интересно почитать!
С уважением, Главный Лаборант!




none, написал:
марта 17, 2010 в 20:51
Это скорее не на синтаксис, а на логику
[Ответить на комментарий]
Главный Лаборант ответил на комментарий:
17 марта 2010 в 22:55
Соглашусь и с этим, но все таки и знания синтаксиса требуются
В общем задачка интересная
[Ответить на комментарий]
Евгений, написал:
марта 18, 2010 в 6:54
Хорошая ошибка. Из разряда труднонаходимых.
[Ответить на комментарий]
Главный Лаборант ответил на комментарий:
18 марта 2010 в 8:49
Ну это не ошибка, а именно такое задание, но если такое допускаешь в разработке, то да…искать это можно очень долго и мучительно…
[Ответить на комментарий]
Канат Гайлимов, написал:
марта 18, 2010 в 11:03
Хм, был уверен, что выведет “Количество параметров: 3″, но так как тут явно подвох, должно быть “Количество параметров: 0″.
Начал шевелить извилинами, думал, что это из-за автонумерации массива. Проверил пример, убрал if-else и выдало “Количество параметров: 3″.
Пошел курить ман
[Ответить на комментарий]
Главный Лаборант ответил на комментарий:
18 марта 2010 в 15:55
Все дело в том, что if/else не правильно записан, т.е. идет не проверка, а присваивание переменной $count значение 0, которое в свою очередь равно false, поэтому будет выводится “Количество параметров:”, но переменной мы уже присвоили ноль.
Вот он где подвох
[Ответить на комментарий]
Канат Гайлимов ответил на комментарий:
19 марта 2010 в 11:14
Да я уже понял
Сам нередко по-невнимательности допускал такие ошибки
[Ответить на комментарий]
Главный Лаборант ответил на комментарий:
19 марта 2010 в 14:42
Да бывает такое, самое трудное это их найти…
dk81, написал:
марта 18, 2010 в 12:26
может ошибаюсь, но разве в пхп должно быть не так?
if($count == 0)
[Ответить на комментарий]
Главный Лаборант ответил на комментарий:
18 марта 2010 в 15:56
Не ошибаетесь, но в этом то и вопрос
Что выведет данный код. Выше уже расписал, что и как будет.
[Ответить на комментарий]
Островитянин ответил на комментарий:
02 Апр 2010 в 16:51
смотря чего вы хотите добиться эти, иногда присваивание в условие очень удобно
для того чтобы подобной логической ошибки не возникало надо:
1. пользоваться хорошей средой разработки например NetBeans
2. придерживаться хороших правил программирования, которые в частности говорят что если вы проверяете количество элементов массива в условии то делать это надо так:
$count = count($arParams);if($count)
[Ответить на комментарий]
Главный Лаборант ответил на комментарий:
02 Апр 2010 в 18:04
Да Вы абсолютно правы, но тема так скажем не в этом, а в том, что просто интересное задание
[Ответить на комментарий]
Островитянин ответил на комментарий:
05 Апр 2010 в 13:30
Задание действительно интересное.
Я просто отвечал dk81 не всегда должно быть так: f($count == 0)
И Канату Гайлимову как такие ошибки не допускать.
Главный Лаборант, написал:
апреля 5, 2010 в 22:45
Островитянин, я просто не сразу понял, извините
Надо будет попробовать еще поискать таких заданий и по разбираться.
[Ответить на комментарий]
Островитянин ответил на комментарий:
05 Апр 2010 в 23:44
С удовольствием посмотрю на те что вы найдете.
Как вам такой?
if($i 1)
{…}
else
{…}
[Ответить на комментарий]
Главный Лаборант ответил на комментарий:
06 Апр 2010 в 11:04
Не совсем понятно, если не трудно оформите в виде какой либо задачи, просто только по условию IF, трудно понять суть.
[Ответить на комментарий]
Островитянин ответил на комментарий:
07 Апр 2010 в 22:23
Например вот:
$i = mt_rand(-5,5);
if($i 1)
{echo $i . ‘ больше 1′;)
else
{echo ‘просто ‘ . $i;}
Островитянин ответил на комментарий:
05 Апр 2010 в 23:46
Главный Лаборант можно в моём предыдущем комментарии, поставить правильный ник Островитянин, а не isleman. А этот коммент стереть?
[Ответить на комментарий]
Островитянин, написал:
апреля 7, 2010 в 22:29
Почему то весь код который я вставил изменяется не понятным образом(((
Если вам не трудно отпишитесь мне на почту, я вам передам код который хотел вставить первый и второй раз.
[Ответить на комментарий]
Главный Лаборант ответил на комментарий:
08 Апр 2010 в 0:05
А Вы через PRE LANG вставляли? Сбоку написан этот тег – его для кода я использовал в комментах и все норм было.
[Ответить на комментарий]