2015-08-13 2 views
-4

Как я могу с помощью PHP менять каждые две цифры в длинном номере? Вы можете увидеть пример ниже:Своп каждые две цифры

Пример: 12345678

преобразуется в: 21436587

+3

PHP - это язык программирования. Если вы не используете число, достаточно большое, чтобы не соответствовать переменному размеру в PHP, да, это в значительной степени возможно. Это ваши вопросы или вы хотите знать, как их достичь? –

+0

Вы также должны указать, что вы хотите сделать, если число содержит цифру _odd_. – paxdiablo

+0

Я хочу знать, как его достичь. – user1273409

ответ

1

Сначала вы должны преобразовать в 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.

+0

Спасибо Аруну за помощь :) – user1273409

+0

рад, что это помогло, в следующий раз подумайте о логике и попытайтесь решить ее urself: D –

0

Вы можете (например) решить эту проблему с помощью цикла и функции substr_replace(). Позаботьтесь о нечетных персонажах.

Как упоминалось в комментариях, сначала попробуйте ввести код.

0
<?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(); 
Смежные вопросы