在PHP中旋转一个字符串N次

时间:2010-03-11 09:27:28

标签: php string

我正在寻找一种方法将字符串向左旋转N次。以下是一些例子:

让字符串为abcdef

  • 如果我将1时间旋转,我想要的时间 bcdefa
  • 如果我将2时间旋转,我想要的时间 cdefab
  • 如果我将3时间旋转,我想要的时间 defabc
  • 如果我将字符串旋转其字符串 长时间,我应该回来了 原始字符串。

7 个答案:

答案 0 :(得分:16)

 $rotated = substr($str, $n) . substr($str, 0, $n);

答案 1 :(得分:3)

这是一个允许任意向左和向右移动的变体,无论输入字符串的长度如何:

function str_shift($str, $len) {
    $len = $len % strlen($str);
    return substr($str, $len) . substr($str, 0, $len);
}

echo str_shift('abcdef', -2);  // efabcd
echo str_shift('abcdef', 2);   // cdefab
echo str_shift('abcdef', 11);  // fabcde

答案 2 :(得分:2)

function rotate_string ($str, $n)
{
    while ($n > 0)
    {
        $str = substr($str, 1) . substr($str, 0, 1);
        $n--;
    }

    return $str;
}

答案 3 :(得分:1)

没有标准功能,但很容易实现。

function rotate_left($s) {
  return substr($s, 1) . $s[0];
}

function rotate_right($s) {
  return substr($s, -1) . substr($s, 0, -1);
}

您可以对此进行扩展,为要旋转的字符数添加可选参数。

答案 4 :(得分:1)

function rotate_string($str) {
    for ($i=1; $i<strlen($str)+1;$i++) {
        @$string .= substr($str , strlen($str)-$i , 1);
    }
    return $string;
}

echo rotate_string("string"); //gnirts

答案 5 :(得分:0)

  

使用此代码

<?php
    $str = "helloworld" ;
    $res = string_function($str,3) ;
    print_r ( $res) ;
    function string_function ( $str , $count )
    {
    $arr = str_split ( $str );
    for ( $i=0; $i<$count ; $i++ )
    {
      $element = array_pop ( $arr ) ;
      array_unshift ( $arr, $element ) ;
    }
    $result=( implode ( "",$arr )) ;
    return $result;
    }
    ?>

答案 6 :(得分:0)

你也可以像这样获得N个旋转的字符串。

$str = "Vijaysinh";
$arr1 = str_split($str);
$rotated = array();
$i=0;


    foreach($arr1 as $a){
        $t = $arr1[$i];
        unset($arr1[$i]);
        $rotated[] = $t.implode($arr1);
        $arr1[$i] = $t;
        $i++; 
    }
    echo "<pre>";print_r($rotated);exit;