【问题标题】:Swap every two digits [closed]每两位数交换一次[关闭]
【发布时间】:2015-08-13 07:40:01
【问题描述】:

如何使用 PHP 交换长数值中的每两位数字? 您可以在下面看到一个示例:

示例:12345678

转换为:21436587

【问题讨论】:

  • PHP 是一种编程语言。除非您使用足够大的数字以不适合 PHP 中的可变大小,否则它几乎是可能的。这是您的问题还是您想知道如何实现它?
  • 如果号码有 odd 位数,您还应该指定要执行的操作。
  • 我想知道如何实现。
  • 试一试,发布一些代码,我们会从那里帮助您。 SO 不是编码服务。
  • 不知道为什么这个问题被关闭了。这是一个完全有效的问题,具体且易于理解。它应该重新打开,这样我就可以将这个优雅的答案作为实际答案发布,即: function swap($n){return ((mb_strlen($n)

标签: php swap digits


【解决方案1】:

首先你必须转换为数组。为此使用

$array=explode("",$string);

你会得到{"1","2","3","4","5","6","7","8"}

然后调用下面的函数。

function swapNumbers($array){
$finalString="";
for($i=0;$i<sizeOf($array);$i++){
if($i!=0){
if($i%2==0){
$finalString.=$array[$i-1].$array[$i];
}
}
if($i==sizeOf($array)-1 && $i%2==1){
$finalString.=$array[$i];
}
}
return $finalString;
}

你会得到21436587

【讨论】:

  • 感谢阿伦的帮助 :)
  • 很高兴它有帮助,下次想想逻辑并尝试自己解决它:D
【解决方案2】:

您可以(例如)通过使用循环和 substr_replace() 函数来解决这个问题。照顾奇怪的角色。

正如cmets中提到的,请先尝试一些代码。

【讨论】:

    【解决方案3】:
    <?php
    
    class SwapableNumber
    {
      private $value;
      private $swapSize;
    
      public function __construct($value, $swapSize = 2)
      {
        $this->value = $value;
        $this->swapSize = $swapSize;
      }
    
      public function swap()
      {
        $result = [];
        $valueParts = str_split($this->value, $this->swapSize);
    
        foreach ($valueParts as $part) {
          // for last part and if it is not complete in size
          // (e.g 2 number for a swapSize == 2), it returns
          // it unchanged. If the requirement is that partial
          // groups of digits should be reversed, too, remove the
          // conditional block.
          if (strlen($part) < $this->swapSize) {
            $result[] = $part;
            break;
          }
    
          $result[] = strrev($part);
        }
    
        return implode('', $result);
      }
    }
    
    // Example usage (by default the swap size is 2 so it swaps every 2 digits):
    $n = new SwapableNumber(12345678);
    echo $n->swap();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 2015-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多