【问题标题】:Return every other character from string in PHP从 PHP 中的字符串返回所有其他字符
【发布时间】:2014-03-03 09:37:29
【问题描述】:

假设我有一个字符串变量:

$str = "abcdefghijklmn";

PHP 中编写一个从字符串的 end 开始并返回所有其他字符的函数的最佳方法是什么?该示例的输出应为:

nljhfdb

这是我目前所拥有的:

    $str = "abcdefghijklmn";
    $pieces = str_split(strrev($str), 1);

    $return = null;
    for($i = 0; $i < sizeof($pieces); $i++) {
            if($i % 2 === 0) {
                    $return .= $pieces[$i];
            }
    }

    echo $return;

【问题讨论】:

  • 有什么个人想法吗?它看起来像一个微不足道的任务。
  • 你想要反向字符串吗?

标签: php


【解决方案1】:

试试看:

$input  = 'abcdefghijklmn';
$output = '';

for ($i = strlen($input) - 1; $i >= 0; $i -= 2) {
  $output .= $input[$i];
}

输出:

string 'nljhfdb' (length=7)

【讨论】:

    【解决方案2】:

    您需要使用str_split 拆分字符串以将其存储在数组中。现在循环遍历数组并比较键以执行modulo 操作。

    <?php
    $str = "abcdefghijklmn";
    $nstr="";
    foreach(str_split(strrev($str)) as $k=>$v)
    {
        if($k%2==0){
            $nstr.= $v;
        }
    }
    echo $nstr; //"prints" nljhfdb
    

    【讨论】:

      【解决方案3】:

      我会和 Shankar 一样,尽管这是循环的另一种方法。

      <?php
          $str = "abcdefghijklmn";
          for($i=0;$i<strlen($str);$i++){
              $res .= (($i-1) % 2 == 0 ? $str[$i] : "");
          }
          print(strrev($res)); // Result: nljhfdb
      ?>
      

      【讨论】:

        【解决方案4】:

        反转字符串然后做类似的事情

        foreach($array as $key => $value)
        {
          if($key%2 != 0) //The key is uneven, skip
            continue;
         //do your stuff
        }
        

        【讨论】:

          【解决方案5】:

          向前循环,向后追加

          <?php
          
              $res = '';
              $str = "abcdefghijklmn";
          
              for ($i = 0; $i < strlen($str); $i++)  {
                  if(($i - 1) % 2 == 0)
                        $res = $str[$i] . $res;
              }
          
              echo $res;
          
          ?>
          

          【讨论】:

            【解决方案6】:

            preg_replace('/(.)./', '$1', strrev($str));

            preg_replace 将反转字符串的每两个字符替换为两个字符中的第一个。

            【讨论】:

              【解决方案7】:

              这样的事情怎么样:

              $str = str_split("abcdefghijklmn");
              
              echo join("",
                  array_reverse(
                      array_filter($str, function($var) {
                              global $str;
                              return(array_search($var,$str) & 1);
                          }
                      )
                  )
              );
              

              【讨论】:

                猜你喜欢
                • 2017-02-21
                • 1970-01-01
                • 1970-01-01
                • 2022-11-25
                • 1970-01-01
                • 2017-11-05
                • 2015-09-18
                • 1970-01-01
                • 2023-04-07
                相关资源
                最近更新 更多