我正在搜索可以用另一种方式反转字符串的函数。 它应该始终采用字符串的最后一个和第一个字符。 在示例中,字符串
123456
应该成为
615243
有没有php功能?
修改
这是我目前的代码
$mystring = "1234";
$start = 0;
$end = strlen($mystring);
$direction = 1;
$new_str = '';
while ($start === $end) {
if ($direction == 0) {
$new_str .= substr($mystring, $start, 1);
$start++;
$direction = 1;
} else {
$new_str .= substr($mystring, $end, -1);
$end--;
$direction = 0;
}
}
答案 0 :(得分:3)
我无法帮助自己,我只需要为你编写代码......
这只需要你的字符串,将它分成一个数组,然后构建你的输出字符串,从正面和结尾取字母。
$output = '';
$input = str_split('123456');
$length = count($input);
while(strlen($output) < $length) {
$currLength = strlen($output);
if($currLength % 2 === 1) {
$output .= array_shift($input);
}
else {
$output .= array_pop($input);
}
}
echo $output;
答案 1 :(得分:3)
与Scopey对for循环的回答没有太大区别:
$str = '123456';
$result = '';
$arr = str_split($str);
for ($i=0; $arr; $i++) {
$result .= $i % 2 ? array_shift($arr) : array_pop($arr);
}
echo $result;
答案 2 :(得分:1)
这应该适合你:
<?php
$str = "123456";
$rev = "";
$first = substr($str, 0, strlen($str)/2);
$last = strrev(substr($str, strlen($str)/2));
$max = strlen($first) > strlen($last) ? strlen($first): strlen($last);
for($count = 0; $count < $max; $count++)
$rev .= (isset($last[$count])?$last[$count]:"" ) . (isset($first[$count])?$first[$count]: "");
echo $rev;
?>
输出:
615243