【问题标题】:Reverse a string with php用php反转字符串
【发布时间】:2012-06-19 12:11:25
【问题描述】:

我正在尝试找到一种反转字符串的方法,我已经看到了替代方法,但我想以这种方式跳出框框思考,不使用其他任何人的代码作为替代方法,下面的代码反转了字符串,但我不断收到此错误:

注意:未定义的偏移量:C:\wamp\www\test\index.php 第 15 行中的 25

25 是正在递减的字符串的长度。

//error_reporting(NULL);
$string = trim("This is a reversed string");

//find length of string including whitespace
$len =strlen($string);

//slipt sting into an array
$stringExp = str_split($string);

//deincriment string and echo out in reverse
for ($i = $len; $i >=0;$i--)
{
echo $stringExp[$i];
}

提前致谢

【问题讨论】:

  • 您的字符串索引从 0 开始,因此第 25 个字符的索引为 24。更改您的代码,使 $i 从 24 变为 0。正如许多海报在下面回答的那样,您还应该寻找一个函数在 PHP 函数库中做你需要的事情。
  • 谢谢我偶然发现 0 被算作一,是的,有图书馆可以做到这一点,但我想尝试在没有它们的情况下以不同的方式做 ;-)
  • 我在这里添加了关于您的问题的答案,stackoverflow.com/a/30722030/137196。随时根据需要进行调整。谢谢

标签: php string reverse


【解决方案1】:

你太努力了,在你最终“重新发明轮子”之前,一定要查阅手册和/或搜索引擎来检查是否有本地函数可以做你想做的事:

strrev — 反转字符串

http://php.net/manual/en/function.strrev.php

$string = "This is a reversed string";
echo strrev($string);
// Output: gnirts desrever a si sihT

【讨论】:

【解决方案2】:

正如其他人所说,有strrev() 可以做到这一点。

如果您想自己构建它(用于学习?):您的问题是您的索引一开始太高 - 长度为 25 的字符串的索引从 0 到 24,因此您的循环必须看起来像这样:

for ($i = $len - 1; $i >=0;$i--)
{
   echo $stringExp[$i];
}

【讨论】:

  • 谢谢,那是我出错的地方,忘记了 0,所以当减少长度时,它正在寻找不存在的 25,是的,我知道 strrev 可用,但我正在尝试这样做不依赖于预先构建的功能。你让我免于头痛:-)
【解决方案3】:
$string = 'mystring';
$length = strlen($string);

for ($i = $length; $i > 0; $i--){
echo $string[$i-1];
}

OUTPUT: gnirtsym

【讨论】:

    【解决方案4】:

    你必须得到$len-1,因为字符串从0开始到$len-1

    【讨论】:

      【解决方案5】:

      这个strrev有一个函数

      【讨论】:

        【解决方案6】:
        echo strrev("This is a reversed string!"); 
        

        【讨论】:

          【解决方案7】:

          php 在字符串功能方面非常完整,您只需要传递字符串即可。这就是为什么php很容易:)

          使用strrev php函数http://bg2.php.net/manual/en/function.strrev.php

          <?php
            echo strrev("This is a reversed string");
           ?>
          
          // Output: gnirts desrever a si sihT
          

          【讨论】:

          • 谢谢 是的 strrev 是一种简单的方法,但我试图有条不紊地解决它,即(很长的路要走)这是我今天的面试。
          【解决方案8】:
          <?php
          // Reversed string and Number
          //  For Example :
              $str = "hello world. This is john duvey";
              $number = 123456789;
              $newStr = strrev($str);
              $newBum = strrev($number);
          
              echo $newStr;
              echo "<br />";
              echo $newBum;
          
          OUTPUT : 
           first : yevud nhoj si sihT .dlrow olleh
           second: 987654321
          

          【讨论】:

            【解决方案9】:
            for ($i = $len-1; $i >=0;$i--)
            {
              echo $stringExp[$i];
            }
            

            因为索引从 0 开始

            【讨论】:

              【解决方案10】:

              将你的 for 循环更改为

              for ($i = $len-1; $i >=0;$i--)
              {
              echo $stringExp[$i];
              }
              

              【讨论】:

              • 正是我在寻找的 oezi 上面提到的关于有 24 个数组键而不是 25 个,干杯
              【解决方案11】:
              <?php
              echo strrev("PHP TUTORS");
              ?>
              

              上述脚本的输出

              SROTUT PHP
              

              Reference Source Code

              【讨论】:

                【解决方案12】:

                你可以使用它:

                echo $reversed_s = join(' ',array_reverse(explode(' ',"Hello World")));
                

                【讨论】:

                  【解决方案13】:
                  public function stringReverse($string="Jai mata di")
                  {
                      $length = strlen($string) - 1;
                      $i = 0;
                      while ($i < $length + 1) {
                          echo $string[$length - $i];
                          $i++;
                  
                      }
                  }
                  

                  【讨论】:

                    【解决方案14】:

                    我们可以借助以下方法进行字符串反转

                        $string = "Hello world!";
                    
                    1. 第一种方法:

                      echo strrev($string);
                      
                    2. 第二种方法:

                       $stringSplit = str_split($string);
                                  for ($i = $len-1; $i >=0;$i--)
                                  {
                                  echo $stringSplit[$i];
                                  }
                      

                    【讨论】:

                      【解决方案15】:

                      这会起作用

                      class StringUtils {
                      
                          public function stringReverse($string){
                              $arr1 = str_split($string);
                              $arr2 = array();
                              for($i = count($arr1); $i >= 0; $i--){
                                  $arr2[count($arr1) - $i] = $arr1[$i];
                              }
                              return implode("", $arr2);
                          }
                      }
                      

                      【讨论】:

                        【解决方案16】:
                        <?php
                        /* Reverse a string with php */
                        echo strrev("Hello World!"); 
                        ?>
                        

                        Reverse a string php

                        【讨论】:

                          猜你喜欢
                          • 2016-01-06
                          • 1970-01-01
                          • 1970-01-01
                          • 2013-02-08
                          • 1970-01-01
                          • 1970-01-01
                          • 2020-02-07
                          相关资源
                          最近更新 更多