iЛаборатория » Blog Archive » Интересный вопрос по PHP

Интересный вопрос по PHP

1

Доброго времени суток!

Да давненько я ничего не писал, но я думаю все прекрасно понимают, что совмещая работу и учебу, остается очень мало времени на личные дела. Но данная заметка не об этом. Сегодня хотел бы показать Вам очень интересный вопрос из тестирования по PHP 5, вопрос больше на внимательность и знание синтаксиса языка.

Вопрос такой: Какой результат выполнения данного программного кода?

Программный код:

$arParams = array("Первый параметр","Второй параметр","Третий параметр");
$count = count($arParams);
if($count = 0)
    echo 0;
else
    echo "Количество параметров: ".$count;

Варианты ответа:

  1. 0
  2. Количество параметров: 3
  3. Количество параметров: 0

Многие будут говорить, что задача элементарная, с этим я конечно спорить не стану, но до чего же красивая и логичная. А еще мне она очень понравилась тем, что сразу показывает врубается ли человек в синтаксис PHP и тем, что это просто хорошая задача на внимательность.

А Вы знаете какие-нибудь, интересные задачки из этой же серии? Было бы очень интересно почитать!

С уважением, Главный Лаборант!

Советуем почитать:



20 комментариев к записи “Интересный вопрос по PHP”

  1. none, написал:

    Это скорее не на синтаксис, а на логику

    [Ответить на комментарий]

    Главный Лаборант ответил на комментарий:

    Соглашусь и с этим, но все таки и знания синтаксиса требуются ;)

    В общем задачка интересная ;)

    [Ответить на комментарий]


  2. Евгений, написал:

    Хорошая ошибка. Из разряда труднонаходимых.

    [Ответить на комментарий]

    Главный Лаборант ответил на комментарий:

    Ну это не ошибка, а именно такое задание, но если такое допускаешь в разработке, то да…искать это можно очень долго и мучительно…

    [Ответить на комментарий]


  3. Канат Гайлимов, написал:

    Хм, был уверен, что выведет “Количество параметров: 3″, но так как тут явно подвох, должно быть “Количество параметров: 0″.
    Начал шевелить извилинами, думал, что это из-за автонумерации массива. Проверил пример, убрал if-else и выдало “Количество параметров: 3″.
    Пошел курить ман :)

    [Ответить на комментарий]

    Главный Лаборант ответил на комментарий:

    Все дело в том, что if/else не правильно записан, т.е. идет не проверка, а присваивание переменной $count значение 0, которое в свою очередь равно false, поэтому будет выводится “Количество параметров:”, но переменной мы уже присвоили ноль.
    Вот он где подвох :)

    [Ответить на комментарий]

    Канат Гайлимов ответил на комментарий:

    Да я уже понял ;) Сам нередко по-невнимательности допускал такие ошибки :)

    [Ответить на комментарий]

    Главный Лаборант ответил на комментарий:

    Да бывает такое, самое трудное это их найти…


  4. dk81, написал:

    может ошибаюсь, но разве в пхп должно быть не так?
    if($count == 0)

    [Ответить на комментарий]

    Главный Лаборант ответил на комментарий:

    Не ошибаетесь, но в этом то и вопрос :) Что выведет данный код. Выше уже расписал, что и как будет.

    [Ответить на комментарий]

    Островитянин ответил на комментарий:

    смотря чего вы хотите добиться эти, иногда присваивание в условие очень удобно

    для того чтобы подобной логической ошибки не возникало надо:
    1. пользоваться хорошей средой разработки например NetBeans
    2. придерживаться хороших правил программирования, которые в частности говорят что если вы проверяете количество элементов массива в условии то делать это надо так:
    $count = count($arParams);
    if($count)

    [Ответить на комментарий]

    Главный Лаборант ответил на комментарий:

    Да Вы абсолютно правы, но тема так скажем не в этом, а в том, что просто интересное задание ;)

    [Ответить на комментарий]

    Островитянин ответил на комментарий:

    Задание действительно интересное.

    Я просто отвечал dk81 не всегда должно быть так: f($count == 0)

    И Канату Гайлимову как такие ошибки не допускать.


  5. Главный Лаборант, написал:

    Островитянин, я просто не сразу понял, извините ;)
    Надо будет попробовать еще поискать таких заданий и по разбираться.

    [Ответить на комментарий]

    Островитянин ответил на комментарий:

    С удовольствием посмотрю на те что вы найдете.

    Как вам такой?

    if($i 1)
    {…}
    else
    {…}

    [Ответить на комментарий]

    Главный Лаборант ответил на комментарий:

    Не совсем понятно, если не трудно оформите в виде какой либо задачи, просто только по условию IF, трудно понять суть.

    [Ответить на комментарий]

    Островитянин ответил на комментарий:

    Например вот:
    $i = mt_rand(-5,5);
    if($i 1)
    {echo $i . ‘ больше 1′;)
    else
    {echo ‘просто ‘ . $i;}

    Островитянин ответил на комментарий:

    Главный Лаборант можно в моём предыдущем комментарии, поставить правильный ник Островитянин, а не isleman. А этот коммент стереть?

    [Ответить на комментарий]


  6. Островитянин, написал:

    Почему то весь код который я вставил изменяется не понятным образом(((
    Если вам не трудно отпишитесь мне на почту, я вам передам код который хотел вставить первый и второй раз.

    [Ответить на комментарий]

    Главный Лаборант ответил на комментарий:

    А Вы через PRE LANG вставляли? Сбоку написан этот тег – его для кода я использовал в комментах и все норм было.

    [Ответить на комментарий]


Оставить свой комментарий

XHTML: Вы можете использовать следующие теги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">