Собственно одно из моих заданий в универе) Код написала. Он прилагается ниже. Реализовала одной функцией. Проверку выполнила. Вопрос теперь вот в чём: Можно его ещё как-нибудь реализовать? При помощи чего? Готового решения написать не прошу. Просто подбросте идею =) Заранее благодарна =)) Код (PHP): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <title>Homework #2.11</title> </head> <body> <div align="center"> <form action="homework_2.php" method="post"> <input name="number" type="text" size="10" maxlength="2" /> <input name="button" type="submit" value="Go!" /> </form> <?php $number = $_POST[number]; //Проверка на случай, если число не введено. if(empty($number)) {echo "<br/><font color='#FF0000'>FORM IS EMPTY OR = 0! WRITE A NUMBER! </font>";} else{ //Проверка на случай, если введено не числовое значение. if(is_numeric($number)) { //Результат: echo "<br/> [color=#FF0000]Your answer is: ".$number=strrev($number)[/color] ;} else {echo "<br/><font color='#FF0000'>YOU ENTERED NOT A NUMERIC VALUE! YOU ENTERED LETTERS! PLEASE, TRY AGAIN =) </font>";} ;} ?> </div> </body> </html>
1)Переводим строку в массив где каждый элемент массива это один символ. Записываем в новую строку второй и потом первый элемент массива. 2)Если это токо двахзначное число можно перемешать символы в исходной строке функцией str_shuffle() до тех пор когда новая перемешаная строка будет не равна исходной.
FIZy_ Второй вами предложанный вариант я кстати недавно сделала) А за первый спасибо, да) Далее, 3. substr() Можно использовать ещё эту функцию. Выдернуть цифры, и засунуть в переменные, а потом поменять местами. 4. Выдернуть при помощи регулярных выражений. Тема актуальна. Продолжаем список... Предлагаем варианты.
можешь еще так Код (PHP): list($a,$b) = $number; echo $b.$a; А зачем столько вариантов, кто больше придумает тому приз дадут?
Код (Text): $str = '2354325'; $i = 0; $j = strlen($str)-1; while ($i < $j) { list($str[$i], $str[$j]) = array($str[$j], $str[$i]); $i ++; $j --; } Добавлено спустя 15 минут 17 секунд: О.. оно двузначное. Тогда $rev = floor($str / 10) + ($str % 10) * 10;
кстати есть проверка на непустое значение и числовое. а вот на то, что там 2 знака - нет) $number = $_POST[number]; // вот так тоже не очень хорошо писать.
pandora, Код (PHP): // вариант 1 $d = '0123456789'; for($x=0,$m=strlen($d); $x<floor($m/2); ++$x) list($d{$x},$d{$m-$x-1}) = array($d{$m-$x-1},$d{$x}); echo $d; // вариант 2 $d = '0123456789'; for($x=strlen($d); --$x>=0;) { $d.=$d[$x]; $d[$x]=null; } echo $d;
iliavlad Да, я вчера после публикации задумалась о том, что число можно ввести и однозначное)) И сделала проверку и на это)) if($number<10) {echo "Вы ввели однозначное число, введите двухзначное";} Вот так-то =) smitt Ну приблизительно так, да) MiksIr, интересный вариант) runcore Это вин! =) Самый настоящий) Всем спасибо за варианты =) Думаю этого хватит)
почему это вы вдруг решили, что среди чисел, меньших десяти нет двузначных? о_О там есть числа с бесконечным количеством знаков, ващета. Добавлено спустя 1 минуту 7 секунд: это феил, говнокод, индусский код, незнание функций пхп и увольнение =) Добавлено спустя 7 минут 55 секунд: Код (PHP): $i = (int) $_GET['i']; if ($i > 9 AND $i < 100) { $i = implode('', array_reverse(str_split($i))); } var_dump($i);
Этот вариант уже предложил FIZy_. Еще полезно бывает использовать error_reporting для отлова своих багов...
на все случаи готовых функций нет! надо уметь решать любую задачу и своими силами. тем более задание как раз в том и состояло, как я понял, чтоб сделать перестановку БЕЗ использования ГОТОВЫХ функций. а с готовыми любой школьник может)
$_POST[number] нотис + не найдена константа =) Код (PHP): <?php $echo=''; if(isset($_POST['button'])) { if(isset($_POST['number']) && trim($_POST['number'])!=='') { $number=intval($_POST['number']); if($number>=0) { $echo=strrev($number); } else { $echo='Нельзя отрицательные числа!'; } } else { $echo='Вы ничего не ввели!'; } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> Homework #2.11 </title> </head> <body> <div align="center"> <p> <?=$echo?> </p> <form method="post"> <input type="text" name="number" maxlength="2" value=""> <input type="submit" name="button" value="Send"> </form> </div> </body> </html>
sobachnik смотрит на нас как на говно =) в пхп надо именно функции знать, ибо они в разы быстрее любого кода. просто ты еще хуже чем я знаешь функции и отмазываешь свою совесть. тогда метод FIZy_-iliavlad всё равно запобеждает твои циклы. походу не любой ибо мы стобой сфейлились
igordata, ты чего троллишь то? ты хоть сообщение топикстартера прочти. там ясно написано, что ТопикСтартер РЕШИЛ задачу с помощью встроенной функции strrev(). при этом был задан вопрос: как нибудь еще - это значит БЕЗ использования этой функции. я, и другие участники, привели решения. я вообще постарался готовые функции реверса не использовать, чтоб показать ТСу как вообще можно это сделать. чтоб поднять алгоритмическую прокаченность ТСа. теперь вопросы: - как на основании всего этого ты, ВНЕЗАПНО, понял что Я плохо знаю встроенные функции php? не если тебя это както греет, то пожалуйста - продолжай так считать))) - если тебе приятно называть себя говном, это твой фетишь, меня то зачем к себе пытаешься причислять? - соревнования чей метод будет БЫСТРЕЕ и ОПТИМАЛЬНЕЕ и не стояло. так к чему эта жалкая попытка указать мне что мои реализации чемто хуже других? но опятьже, если тебе приятно думать что я лузер в программировании, то продолжай ошибаться) мой код говорит о моем уровне лучше чем слова, так же как и твой о тебе ты еще и модератор тут? ну тогда твое поведение чести тебе точно не делает. забань себя дня на три) для профилактики
Я конечно немного удивлена резонансом, который был вызван моим постом. Хотя по-правде, мне было крайне интересно почитать и сравнить ваши точки зрения =) igordata Функции безусловно самый оптимальный вариант, но мне и вправду были нужны другие возможные варианты) почему это вы вдруг решили, что среди чисел, меньших десяти нет двузначных? о_О там есть числа с бесконечным количеством знаков, ващета. Это как? о_О У меня на самой html форме стояло ограничение на два знака ващемто, о каком бесконечном количестве простите идёт речь? Если число будет больше 10-ти, то выполняется весь мой код, если меньше, то селяви, не судьба) Или я опять чего-то путаю? Your Согласна, спасибо) runcore Как раз это мне и было нужно) Вы просто няша!
Минус сто меньше десяти и пройдёт вашу проверку. Добавлено спустя 2 минуты 9 секунд: А блин косяк это была проверка наоборот. Прости.
Если имено подразумевается под числом, то это не будет "01 или 00". =) Код (PHP): if($number>=0) { if(strlen(substr($number,0,2))===2) { $echo=strrev($number); } else { $echo='Строка должна быть двузначным числом!'; } } else { $echo='Нельзя отрицательные числа!'; } Если, кто - то попытается отправить при помощи js, вас input не спасет.