字符串以另一种方式反转

时间:2015-01-30 00:38:43

标签: php string

我正在搜索可以用另一种方式反转字符串的函数。 它应该始终采用字符串的最后一个和第一个字符。 在示例中,字符串

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;
    }
}

3 个答案:

答案 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;

示例:http://ideone.com/Xyd0z6

答案 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