【问题标题】:Reverse a string in php without using any string function在不使用任何字符串函数的情况下反转php中的字符串
【发布时间】:2015-12-22 12:24:23
【问题描述】:

在昨天的采访中,有人问我如何在不使用 strrev() 或 strlen() 之类的任何字符串函数的情况下反转字符串。我在网站上找到了这个示例,但它给出了错误。是否可以在没有 strlen() 的情况下执行此操作。

未初始化的字符串偏移量:-1 in D:\xampp\htdocs\PhpProject1\index.php 在第 xx 行

$string = "ZEESHAN";

$i =0;

while(($string[$i])!=null){

        $i++;

}

$i--;

while(($string[$i])!=null){

        echo $string[$i];

$i--;

}

【问题讨论】:

    标签: php


    【解决方案1】:
    $string = 'zeeshan';
    $reverse = '';
    $i = 0;
    while(!empty($string[$i])){ 
          $reverse = $string[$i].$reverse; 
          $i++;
    }
    echo $reverse;
    

    【讨论】:

    • 这是 php 7.2 的完美内存优化解决方案,谢谢。 man.3v4l.org/eLttS
    • 检查字符最好使用isset($string[$i]),因为如果该行包含一个数字0,脚本将停止。
    【解决方案2】:

    试试-

    $string = "ZEESHAN";
    
    $j = 0;
    while(!empty($string[$j])) {
       $j++;
    }
    
    for($i = ($j-1); $i >= 0; $i--) {
        echo $string[$i];
    }
    

    输出

    NAHSEEZ
    

    【讨论】:

    • 我不能使用 [strlen ](php.net/manual/en/ref.strings.php) 因为它是一个字符串函数。
    • 希望你可以使用empty。 @ShakunChaudhary
    • 您是否在您的 pc 上运行此示例,因为我收到错误 ** 注意:未初始化的字符串偏移量:D:\xampp\htdocs\PhpProject1\example.php 第 10 行 NAHSEEZ 中的 7 **
    • 这是因为 sougata 在他的链接@ShakunChaudhary 中也回应了$j
    • 这是因为你必须在最后减去 1 到 $j,因为在这种情况下我们有 7 个字符,但是由于我们正在遍历一个数组,所以我们必须从索引 0 开始
    【解决方案3】:

    我已经为字符串反转创建了一个简单的逻辑

    $str = 'ABCD';
    $strReversed = '';
    $length = strlen($str);
    for($i=$length-1; $i >= 0; $i--){
        $strReversed .= $str[$i];
    }
    echo $strReversed;
    

    【讨论】:

    • 你使用了strlen字符串函数,但我们有限制。
    【解决方案4】:

    你可以像 as 一样使用whilefor 循环

    $string = "ZEESHAN";
    $reverse = "";
    $j = 0;
    while(isset($string[$j])){
        $j++;
    }
    
    for($i = $j - 1; $i >= 0; $i--){
        $reverse .= $string[$i];
    }
    echo $reverse;
    

    【讨论】:

      【解决方案5】:

      你可以试试count_charsarray_sum

      <?php
      
      $string = "ZEESHAN";
      $count=array_sum(count_chars($string));
      
      for($i=$count -1 ;$i>=0;$i--){
              echo $string[$i];
      }
      ?>
      

      如果您不想要任何 php 字符串函数,您可以使用 krsortarray 尝试这种方式:

      <?php
      
      $string = "ZEESHAN";
      $arr = array();
      $i=0;
      while(isset($string[$i])){
              $arr[$i] = $string[$i];
              $i++;
      }
      krsort($arr);
      $final = implode("",$arr);
      
      var_dump($final);
      ?>
      

      【讨论】:

        【解决方案6】:
        //Program for reversing a string
        <?php
        class str_rev{
            public function Revese_Str($string){
                $reverse = '';
                $i=0;
                while(!empty($string[$i])){ 
                  $reverse = $string[$i].$reverse; 
                  $i++;
                }
                return $reverse;
            }
        }
        $object = new str_rev();
        echo $object->Revese_Str('Ayush Jain');
        

        【讨论】:

          【解决方案7】:

          检查此代码以解决此问题。

          <?php
          
          $string = "ZEESHAN";
          
          $i =0;
          
          while(!empty($string[$i])){ 
                 
                  $i++;
          }
          
          $i--;
          
          while(!empty($string[$i])){     
          
                  echo $string[$i];
          
          $i--;
          
          }
          
          ?>
          

          【讨论】:

            【解决方案8】:

            你可以这样做

            $string = "heya";
            $i = strlen("heya") - 1;
            $newStr = "";
            
            while($i >= 0) {
                $newStr .= $string[$i];
                $i--;
            }
            echo $newStr; // output: ayeh
            

            【讨论】:

            • 但是你使用的是strlen函数,它是字符串函数
            【解决方案9】:
            <!doctype html>
            <html>
              <body>
                <center>
                  <form action="#" method="get">
                    <br>
                    <input type="text" name="txt"/>
                    <br><br>
                    <input type="submit" name="submit"/>
                    <br><br>
                  </form>
            

            <?php
            if(isset($_GET["submit"])) {
                $name = $_GET["txt"];
                for ($i = 0; isset($name[$i]); $i++) {
                    $j = $i;
                }
                for ($k = $j; isset($name[$k]); $k--) {
                    echo $name[$k];
                }
            }
            

            【讨论】:

              【解决方案10】:

              请看下面的代码:反转字符串

              $str = 'abcdefg';
                  $reverseString = '';
                  for($i=strlen($str);$i<=strlen($str);$i--){
                    $reverseString .= $str[$i];
                  if($i==0)
                  break;
                  }
              
                  echo $reverseString;
              

              以上代码输出为:

              gfedcba
              

              【讨论】:

              • 但是你使用的是 strlen() 函数,它是字符串函数。
              【解决方案11】:
              <?php
              $string = 'ZEESHAN';
              $reverse = '';
              $i = 0;
              while(!empty($string[$i])){
                  $reverse = $string[$i].$reverse;
                  $i++;
              }
              echo $reverse;
              ?>
              

              查看完整帖子:https://www.troposal.com/reverse-string-without-function-php/

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2021-12-09
                • 1970-01-01
                • 2017-06-15
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-02-06
                相关资源
                最近更新 更多