@0ldn0mad

Как собрать скрипт на PHP?

Добрый день.
Сам себе придумал ребус, теперь голову ломаю как его до ума собрать?
Задача: Дана на входе строка (количество символов не известно). Необходимо сделать над строкой чередование регистров, например, на входе дано: "Текст для опытов", то на выходе должно быть: "тЕкСт дЛя оПыТоВ". План решения задачи у меня такой:
1. Функцией strtoupper( ) делаем все буквы в нижнем регистре.
2. Функцией strlen( ) подсчитываем количество букв.
3. Делаем цикл - for ($i = 0; $i < strlen($str); $i++)
4. В цикле пишем условие, в котором различаем четные и нечетные буквы - if ($str[$i] % 2 == 0)
5. Если четная буква, то $str[$i] .= strtoupper($str[$i])

А вот как дальше это между собой собрать, чтобы получилось решение, никак не выходит.....
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
DevMan
@DevMan
да прост:
if ($i % 2 == 0) {
	$newStr .= mb_strtoupper(mb_substr($str, $i, 1));
}
else {
	$newStr .= mb_strtolower(mb_substr($str, $i, 1));
}
https://3v4l.org/Lmqs8
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
index0h
@index0h
PHP, Golang. https://github.com/index0h
В одном цикле проходите по строке. Если счетчик обработанных сиволов кратен двум И сивол является строчным - в нижний, в противном случае в верхний регистр.
Ответ написан
Комментировать
function str_stairs($string = '') 
{
    $chars = preg_split('//u', $string, NULL, PREG_SPLIT_NO_EMPTY);
    
    foreach($chars AS $k => $v) {     
        if ($k % 2)
            $str[] = mb_strtolower($v);
        else
            $str[] = mb_strtoupper($v);
    }    

    return implode('', $str);       
}

// Вывод 
echo str_stairs('Тестовый текст для примера');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
02 мая 2024, в 23:56
2000 руб./за проект
02 мая 2024, в 23:29
1500 руб./в час
02 мая 2024, в 23:16
7500 руб./за проект