每两个数字交换一次
Swap every two digits
如何使用 PHP 交换长数值中的每两位数?
您可以在下面查看示例:
示例:12345678
转换为:21436587
您可以(例如)使用循环和 substr_replace() 函数解决此问题。注意奇怪的字符。
如评论中所述,请先尝试一些代码。
首先你必须转换成使用
的array.For
$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
.
<?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();
如何使用 PHP 交换长数值中的每两位数? 您可以在下面查看示例:
示例:12345678
转换为:21436587
您可以(例如)使用循环和 substr_replace() 函数解决此问题。注意奇怪的字符。
如评论中所述,请先尝试一些代码。
首先你必须转换成使用
的array.For$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
.
<?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();