PHP不使用任何內建函式實現字串翻轉

OldBoy~發表於2018-01-05

實現字串翻轉PHP本身自帶一個函式就可以解決,strrev函式。這裡不適用任何內建函式實現字串翻轉

案例一(純字母):

$str = 'abcdefghig k';   //假設測試的字串/g與k之間有一個空格
//php中的字串可以看做陣列來處理,比如程式碼輸出  echo $str[4]; ,結果為 e,也就是abcdefghigk的第四個字母

function str_rev ($str)
{
    for ($i = 0; true; $i++) //true模擬死迴圈
    {   
        if (!isset($str[$i])){   //如果沒有資料,也就是超出字串長度,那麼跳出死迴圈
            break; 
        }
    }    
    //那麼字串長度就是$i - 1
    $last_str = '';
    for ($j = $i - 1; $j >=0 ; $j -- )
    {
        $last_str .= $str[$j];
    }
    return $last_str;
}

echo str_rev($str);
k gihgfedcba  //輸出結果

 案例二(有中文,且包含內建函式):

$str = 'abcd卡忙北鼻abc d';  
 function str_rev($str,$encoding='utf-8'){
        $result = '';
        $len = mb_strlen($str);
        for($i=$len-1; $i>=0; $i--){
            $result .= mb_substr($str,$i,1,$encoding);
        }
        return $result;
    }
echo str_rev($str);
d cba鼻北忙卡dcba  //輸出結果

 

相關文章