最小代价实现将字符串完全反序, e.g. 将 “1234567890” 转换成 “0987654321”

要实现字符串反转,有两种方式:

  • PHP自带函数

  • 不使用函数(循环)

使用 PHP 自带函数


$a = '1234567890';

// 输出 0987654321
echo strrev($a);

不使用函数(循环)


$str = '';
$i = 0;

while( isset($a[$i]) && !is_null($a[$i])) {
$str = $a[$i++].$str;
}

// 输出 0987654321
echo $str;


拓展

上面两种方式,反转含有中文的字符串时,会因为编码出现乱码问题。

解决:

mb 系列函数没有直接实现反转的函数,于是用循环的方式去实现。


$a = '@#¥(*&中文一段abcdefg^';

function my_strrev(string $string) {
if (empty($string)) {
return $string;
}

$str = '';
$i = 0;
while ($i < mb_strlen($string)) {
$str = mb_substr($string, $i++, 1).$str;
}

return $str;
}

// gfedcba段一文中&*(¥#@
echo my_strrev($a);