php字符增量' Y'和++ 2次

时间:2017-08-19 05:26:58

标签: php character increment

我这里有一个php问题。我有2个输入,($ s,$ n),$ s代表一个字符串,$ n是一个整数。问题是:"将每个角色转移到$ s $ n位置"。

例如$ s =" AA",$ n = 2,然后输出是" CC"

我这里有一点问题,如果$ s =" YY",$ n = 2,它会输出" aaaa",但我

希望输出为" aa",我该如何修复我的代码?

下面是我的代码:

$words = str_split($s);            

for($i=0;$i<count($words);$i++){

  if($words[$i] == " ") {
    //if space
    continue;
  }                    
  else{
    for($y=0;$y<$n;$y++)
      $words[$i] = ++$words[$i];                
  }      
}

$ans = join("", $words);

print("$ans\n");

非常感谢。

2 个答案:

答案 0 :(得分:0)

此解决方案可能不是100%正确。或者可能有更好的解决方案。但是如果长度超过原始长度,我会尝试从字符串中获取子字符串

<?php
$s = "YY";
$n = 2;
$words = str_split($s);            
for($i=0;$i<count($words);$i++){

  if($words[$i] == " ") {
    //if space
    continue;
  }                    
  else{
    for($y=0;$y<$n;$y++){
      $cur_len = strlen($words[$i]);
      $words[$i] = ++$words[$i];
      $new_len = strlen($words[$i]);
      if($new_len > $cur_len)
        $words[$i] = substr($words[$i], 0,$cur_len);      
    }
  }      
}

$ans = join("", $words);

print("$ans\n");

答案 1 :(得分:0)

当你将Y增加2时获得AA的原因是它将它视为一个数字。所以(例如)9 + 1 = 10,所以进位有一个额外的数字。当你递增YY的每个数字时,你将获得两个元素都AA - 因此AAAA输出。

如果您只想要最后一位数字......

$s = "YY";
$n=2;
$words = str_split($s);

for($i=0;$i<count($words);$i++){
    if($words[$i] != " ") {
        for($y=0;$y<$n;$y++)    {
            $words[$i]++;
        }
        $words[$i]= substr($words[$i],-1);
    }    
}

$ans = join("", $words);

print("$ans\n");