1) Дана строка. С помощью цикла удалите из нее каждый третий символ. 2) Дана строка. С помощью цикла выведите символы этой строки в обратном порядке. 3) Сделайте функцию, которая принимает строку на русском языке, а возвращает ее транслит. Сделайте также функцию, которая выполняет обратную операцию. Спасибо!
Пришёл с другого форума, там дошёл до решение одной задачи) (здесь она не представлена) Над этими надо подумать. Идея есть ко второй задачи. Найти функцию посимвольно разбивающая строку, а затем, с помощью цикла написать символы начиная с последнего. Осталось теперь только это реализовать!
так, отлично, ты на верном пути. Какой поисковый запрос поможет тебе найти ответ на этот вопрос? Подумай, может ли такая функция помочь с решением первой задачи. напиши в яндексе "php обратный цикл" и посмотри пример. Если будут вопросы - задавай.
2) Дана строка. С помощью цикла выведите символы этой строки в обратном порядке. PHP: $text = 'Hello'; for($i = mb_strlen($text); $i > -1; $i--){ $new_text .= $text[$i]; } echo $new_text; --- Добавлено --- Решил! PHP: $text = 'Hello'; for($i = mb_strlen($text); $i > -1; $i--){ $new_text .= $text[$i]; } echo $new_text;
молодец. Теперь вот тебе ещё кое что. В пхп много встроенных функций, почти на все случаи жизни. Например вот эта https://php.ru/manual/function.strrev.html
Спасибо! Да, знаю, что они существуют, но в задании было требование работать с циклами.Но всё равно спасибо) ... Пока не получается с этой задачей: "Дана строка. С помощью цикла удалите из нее каждый третий символ." Непонятно пока, как должно выглядеть условие for, чтобы удалялся каждый 3-й символ. Второе, какая функция его удаляет) PHP: $text = 'Hello'; $count = 0; for($i = 0; $i < mb_strlen($text); $i++){ $count++; if($count == 3)# я не могу так написать, поскольку акцент делаю не на каждом 3, а только на третьем! А как написать для каждого третьего? }
Почему не можешь? Ты вне цикла объявил переменную каунт и присвоил ей значение 0. В цикле при каждой итерации увеличиваешь её значение. Ты в верном направлении, всё делаешь почти как надо. Моментов несколько: 1. Может не удалять надо? Просто собираешь новую строку из символов, если это не третий символ. А насчёт третьего, с переменной у тебя всё правильно. Просто обнуляй её, если она равна 3. (Ну правда не 3, а 2, ты же с 0 начинаешь)
PHP: $text = 'Hello'; $count = 0; for($i = 0; $i < mb_strlen($text); $i++){ $count++; if($count == 3){# я не могу так написать, поскольку акцент делаю не на каждом 3, а только на третьем! А как написать для каждого? #удаляем символ, пока правда не знаю как! $count = 0; # Обнуляем, для того, чтобы if работал } } --- Добавлено --- Спасибо большое за подсказку!!! Решил!!! Действительно, зачем удалять, когда можно собирать)) Вот код: PHP: $text = 'Hellogirls'; $count = 0; for($i = 0; $i < mb_strlen($text); $i++){ $count++; if($count == 3){ $count = 0; }else{ $new_text .= $text[$i]; } } echo $new_text; Всё, пора спать! Не знаю сколько у вас, а у меня скоро 6 утра) Но теперь я спокоен! А то, на меня накинулись на других форумах, весь сон отбили, пока не решил несколько задач)
НЕ будет работать применительно к строке. Возможность обращения к символу в строке по индексу - это вообще полукостыль. Который не будет работать с мультибайтовой кодировкой, кстати. --- Добавлено --- Автор, молодец. Обычно те, кто приходят с проблемой, как у тебя, тупо клянчат решение. Чтоб человек с подсказок и наводящих вопросов сам смог накодить приемлемое решение - это, к сожалению, редкость
PHP: <?php $text = 'Hellogirls'; $new_text=''; for($i = 0; $i < mb_strlen($text); $i=$i+3){ $new_text .= $text[$i]; } echo $new_text; ?> ой чего это я такое сделал .. а че шаг ведь можно и через 3 сразу делать
Ты не удаляешь , а собираешь символы, и очерёдность (каждый 3) не соблюдена Твой цикл возмёт 1 символ, потом 4 символ, потом 7 символ,
а да .. ему надо выковорить каждый 3 .. от празников не отойду никак =) --- Добавлено --- а вот этого в инете просто немеряно .. http://htmlweb.ru/php/example/translit.php PHP: function transliterate($st) { $st = strtr($st, "абвгдежзийклмнопрстуфыэАБВГДЕЖЗИЙКЛМНОПРСТУФЫЭ", "abvgdegziyklmnoprstufieABVGDEGZIYKLMNOPRSTUFIE" ); $st = strtr($st, array( 'ё'=>"yo", 'х'=>"h", 'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>'', 'ь'=>'', 'ю'=>"yu", 'я'=>"ya", 'Ё'=>"Yo", 'Х'=>"H", 'Ц'=>"Ts", 'Ч'=>"Ch", 'Ш'=>"Sh", 'Щ'=>"Shch", 'Ъ'=>'', 'Ь'=>'', 'Ю'=>"Yu", 'Я'=>"Ya", )); return $st; } echo transliterate("У попа была собака, он ее любил.");
и да делать вот так: Не здорово. Ты на каждой итерации дергаешь функцию, чтобы получать одно и то же число каждый раз. попробуй так: PHP: for($i=0, $limit = mb_strlen($text); $i<$limit; $i++){ Получать длину во второй секции можно, разве что, в случае, если длина является свойством объекта, а не результатом функции.
Выражаю вам большую благодарность за проявленное терпение и помощь!!! Вы не только помогли найти правильное решение, но и тактично указали как не надо делать! Отныне я не буду вываливаться со списком вопросов, а буду обращаться с не работающим кодом и комментарием своих действий или описанием проблем. Жаль, что я допустил такую ошибку сразу в 4-х форумах! Но зато, получил огромный опыт) --- Добавлено --- Огромное спасибо!!!
не спойлери Да, @Алексей87К чувак ты молодец! --- Добавлено --- не за что. Ты работаешь или учишься? --- Добавлено --- @Алексей87К к твоей борьбе с задачами присоединилась куча участников форума. Это именно потому, что они видят, что ты сам думаешь и пытаешься. Молодец.
Огромное спасибо всем за понимание! По поводу того, работаю я или учусь, то сейчас больше учусь! Пока что я больше верстальщик, но хочу овладеть backendОМ ) --- Добавлено --- Ребята, подскажите пожалуйста? Не знаю, как выделить оба элемента в массиве. Я из строки сделал массив, чтобы решить данную задачу, но я не знаю, как выделить все элементы. Спасибо! 42. Дана строка. Сделайте заглавным последний символ каждого слова этой строки не используя цикл. PHP: $str = 'have pencil'; $arr = explode(' ', $str); $new = mb_strtoupper(substr($arr[0], 0, 1)); # но я тем самым выделяю только первый элемент. Пробовал и так: $arr[strlen($str)] var_dump($new);
Нет, это не правильно! Я же здесь выделяю один символ. А мне нужно слово с заглавной последней буквой, точнее слова. У есть меня другой алгоритм решении. С начала разбиваем строку в массив $str = 'have pencil'; $arr = explode(' ', $str); Затем какой-то функцией добавляем каждый элемент массива в переменную (Я не знаю какой, прошу подскажите!!!) и преобразовываем каждую строковую переменную через эти функции)) - mb_strtoupper(substr($переменная, -1)) и потом эти строки складываем и присваиваем новой переменной! Только всё это как то по деревянному. Есть ли более простой способ? P.S. Повторяю задачу: Дана строка. Сделайте заглавным последний символ каждого слова этой строки не используя цикл. --- Добавлено --- Огромное спасибо за понимание и за помощь!!!
в массив добавлять просто так: PHP: $arr = []; $arr[] = 'str1'; $arr[] = 'str2'; --- Добавлено --- а это зачем? --- Добавлено --- а, понял. суть в том, что применить действия в цикле но не в цикле можно только через array_walk() или array_map(), это я сразу говорю, потому что хрен знает, как бы ты это смог найти. Возможно вы это проходили.
Огромное спасибо за понимание и за помощ Спасибо большое!!! Вы меня снова выручили!!! Я правда не до конца понял функцию array_walk, но смог выполнить через array_map! PHP: function my($x){ return ucfirst($x); } $str = 'have pencil'; $arr = explode(' ', $str); $new = array_map('my', $arr); var_dump($new); Правда в своей функции я использовал другую функцию, не та, что по заданию, но для меня главное было чтоб работал сам механизм! Интересно... У меня на выходе получился массив. А в забить элементы массива в разные переменные, с целью дальнейшей их конкатенации в новую? Такая функция существует?