[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с strlen
Страницы: 1, 2
Valeriya12
Эта простая задача. потребителю нужно вводить 10 цифр. Я хочу, чтоб если потребитель вводил меньше или больше чем 10 цифр, это будет ошибка. Если точно 10, будет правильно.

Но мой код не работает. Проблема в том, что всегда получается FALSE. Не знаю точно почему. Сможете помогать, пожалуйста?

<?php
echo "Enter your ID.";
$ID=trim(fgets(STDIN));

switch ($ID) {
case (strlen($ID==10)):
echo "Thank you.";
break;
case (strlen($ID>10)):
echo "False. You entered more than 10 figures. You need exactly 10.";
break;
case (strlen($ID<10)):
echo "False. You entered less than 10 figures. You need exactly 10.";
break;
}
?>
pamparam

echo "Enter your ID.";
$ID=strlen(trim(fgets(STDIN)));

switch ($ID) {
case ($ID==10):
echo "Thank you.";
break;
case ($ID>10):
echo "False. You entered more than 10 figures. You need exactly 10.";
break;
case ($ID<10):
echo "False. You entered less than 10 figures. You need exactly 10.";
break;
}
AllesKlar
Она так не поймет
Цитата
Проблема в том, что всегда получается FALSE. Не знаю точно почему


Valeriya12
Синтаксис языка приближенно похож на человеческий. У тебя же с английским полный порядок?

Читаем:
strlen($ID==10) // strlen - длина строки.
Т.е. ты написала "длина строки (ID , который равен 10)".
Но у тебя же нет ниодного ID, который равен 10. Вот и длина строки того, чего нет, всегда равна FALSE.

А нам бы нечто такое:
если длина строки(ID)равно 10...
переводим на жуткий php

case ( strlen($ID) == 10)
...

ну, а pamparam уе слегка оптимизировал.

P.S.
да, и User в переводе на русский технический - это пользователь
Потребитель - это Сonsumer

Ну, нам, нерусям, простительно smile.gif

_____________
[продано копирайтерам]
Valeriya12
AllesKlar! Да спасибо, конечно имела в виду пользователь а не потребитель, просто иногда когда не уверена как правильно писать слова, рассеянно копирую из словаря..... и таким образом ошибки бывают.

Хоть признаюсь, что русский не мой родной язык (очевидно?), бабушка меня научила.

Цитата
У тебя же с английским полный порядок


По-моему да. Но только по-моему.

case ( strlen($ID) == 10)


Ой, да! Надо бы поставила strlen там... блин. Спасибо. Могу двигаться дальше.
Valick
Valeriya12, у вас отличный русский, не переживайте smile.gif


_____________
Стимулятор ~yoomoney - 41001303250491
AllesKlar
Valeriya12
фуй-фуй-фуй.. забудь, что я там написал, это от недосыпания.

Оператор
switch($ID)
выбирает один из подходящих вариантов ($value) для $ID
case ($value)

следовательно, strlen($ID) - это НЕ значение $ID, которое ожидает switch.

В общем, pamparam написал правильный вариант.

P.S.
кто-нибудь, позвоните Valeriya12, а то она там уже поди волосы повырывала, мучаясь с нерабочим кодом smile.gif

_____________
[продано копирайтерам]
killer8080
И что? Никого никак не смущает нелепое применение конструкции switch в этой задаче?
Советчики блин biggrin.gif

Valeriya12
выкиньте switch, тут только
if/elseif/...
Valeriya12
@ Valick - Спасибо :-)

@AllesKlar - Нет нет, Вы были правы. Теперь этот код работает как я хочу

<?php
echo "Enter your ID.";
$ID=trim(fgets(STDIN));

switch ($ID) {
case ((strlen($ID)==10)):
echo "Thank you.";
break;
case ((strlen($ID)>10)):
echo "False. You entered more than 10 figures. You need exactly 10.";
break;
case ((strlen($ID)<10)):
echo "False. You entered less than 10 figures. You need exactly 10.";
break;
}
?>


Хоть я как-то понимаю о чем вы, killer8080 и AllesKlar, что здесь лучше "if"...
Но как можно узнать (заранее) когда лучше "if" и когда "switch", в общем и целом?... может быть это просто интуиция, которая растет со временем?
Xpund
killer8080
поддерживаю.

И если тс решит оставить свитч, я бы добавил дефолт. На всякий

_____________
минус, конечно, иногда полезен, но плюс мне нравиться больше :)
Женский журнал - Жена сказала раскрутить сайт любой ценой (Sorry)
Xpund
Цитата (Valeriya12 @ 13.02.2014 - 09:21)
Хоть я как-то понимаю о чем вы, killer8080 и AllesKlar, что здесь лучше "if"...
Но как можно узнать (заранее) когда лучше "if" и когда "switch", в общем и целом?... может быть это просто интуиция, которая растет со временем?

Легко и просто.
if/esle - это условие
switch - перечисление, если понадобиться проверить все условия.

_____________
минус, конечно, иногда полезен, но плюс мне нравиться больше :)
Женский журнал - Жена сказала раскрутить сайт любой ценой (Sorry)
AllesKlar
killer8080
Кто его знает... видно, что человек решает задачи.
Вполне возможно, что сейчас они изучают switch

Сделаем девочке медвежью услугу (Valeriya12 у бабушки спроси, долго объяснять smile.gif )


_____________
[продано копирайтерам]
killer8080
Цитата (AllesKlar @ 13.02.2014 - 12:19)
killer8080
Кто его знает... видно, что человек решает задачи.

видно что новичок идет не потому пути, и нужно наставить его на путь истинный smile.gif

Цитата (Valeriya12 @ 13.02.2014 - 11:21)
Теперь этот код работает как я хочу

все зависит от того, чего ты "хочешь" wink.gif
Если ввести 0000000000000000000000000000 что он должен вывести?
AllesKlar
killer8080
Немного флуда...
Я когда второе высшее получал, экономическое заочно. Пришел "сдавать" высшую математику на первом курсе со своей зачеткой пятикурсника Прикладной математики.
И знаешь что.. замучился я сдавать на экономе. Раза с 5го на трояк сдал.
Потому как "Кто вас так учил матрицы решать? Профессор с прикладной математики? ну вот ему и идите мой предмет сдавать".

А в остальном оно-то да, ты прав.

_____________
[продано копирайтерам]
Valeriya12
Цитата (killer8080 @ 13.02.2014 - 14:51)
Цитата (AllesKlar @ 13.02.2014 - 12:19)
killer8080
Кто его знает... видно, что человек решает задачи.

видно что новичок идет не потому пути, и нужно наставить его на путь истинный smile.gif

Цитата (Valeriya12 @ 13.02.2014 - 11:21)
Теперь этот код работает как я хочу

все зависит от того, чего ты "хочешь" wink.gif
Если ввести 0000000000000000000000000000 что он должен вывести?


В этом случае, программа говорит "Больше 10 цифр нельзя". Всё как следует.
Цитата
Сделаем девочке медвежью услугу (Valeriya12 у бабушки спроси, долго объяснять smile.gif )


Ой, лучше просто где-то читать определение чем бабушку спросить, а то полный доклад получу (и отвертеться из этого никак). Кстати, прочитала, и да, важно избегать таких услуг.

И да, догадались, изучаем switch smile.gif

Цитата
switch - перечисление, если понадобиться проверить все условия.


Хорошо! Кажется со временем пойму все подробности по этому поводу. Ну, или надеюсь, по крайней мере.


СПАСИБО ВСЕМ!
killer8080
Цитата (Valeriya12 @ 13.02.2014 - 22:54)
В этом случае, программа говорит "Больше 10 цифр нельзя". Всё как следует.

а теперь введи "0" wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.