PHPで文字列を反転させる

来週の新卒研修コードレビューのテーマらしい。
ぱっと思いついた方法だけ載せてとく。

<?php

//strrevは使わない

$str = 'Hello. Nice to meet you.';

echo str_reverse($str);
echo str_reverse2($str);

function str_reverse($str) {
    $_str = '';

    for ($i = 1;$i <= strlen($str);$i++) $_str .= substr($str, $i * -1, 1);

    return $_str;
}

function str_reverse2($str) {
    $_str = '';

    for ($i = strlen($str) - 1;$i >= 0;$i--) $_str .= $str[$i];

    echo $_str;
}

swapでやる方法。

<?php

$str = 'Hello. Nice to meet you.';
echo str_reverse3($str);

function str_reverse3($str) {
    $forword  = 0;
    $backword = strlen($str) - 1;

    while ($forword < $backword) {
        list($str[$forword], $str[$backword]) = array($str[$backword], $str[$forword]);
        $forword++;
        $backword--;
    }

    return $str;
}

for, foreach, while などのループをつかわない

<?php

$str = 'Hello. Nice to meet you.';
echo str_reverse4($str);

function str_reverse4($str, $re_str = '') {
    if (strlen($str) === 0) return $re_str;

    $rest_str = substr($str, 0, -1);
    $re_str  .= substr($str, -1);

    return str_reverse4($rest_str, $re_str);
}