首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP -工业元素到大写

PHP -工业元素到大写
EN

Stack Overflow用户
提问于 2015-09-17 09:48:17
回答 3查看 81关注 0票数 3

我正在努力克服代码字节的挑战,因为我正在向自己传授一些PHP。

我一直在努力完成以下挑战(链接如下)

代码字节挑战

下面是to,我有点困惑,因为它现在用数组的每个字母大写,而不是在'if语句‘中选择的字母。

我渴望学习,不只是简单地想要一个没有解释的答案。如果你能告诉我,我哪里错了,如果我是在做长篇大论的方法。

谢谢你的帮助。

代码语言:javascript
复制
<?php 

function LetterChanges($str) {  

// code goes here
$str = strtolower($str);
$strArray = str_split($str);

for($i = 0; $i < strlen($str); $i++){

  ++$strArray[$i];

 if($strArray[$i] == "aa"){
   $strArray[$i] = "A";
 }
 elseif($strArray[$i] == "e" || "i" || "o" || "u"){
   $strArray[$i] = strtoupper($strArray[$i]);
 }

 }

 return implode ($strArray); 

 }

 // keep this function call here  
 // to see how to enter arguments in PHP scroll down
 echo LetterChanges(fgets(fopen('php://stdin', 'r')));  

 ?> 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-17 10:27:16

您可以使用以下代码

代码语言:javascript
复制
function LetterChanges($str){
    $arr = array();
    $strlen = strlen( $str );
    for( $i = 0; $i <= $strlen; $i++ ) {
        $char = substr( $str, $i, 1 );
        ++$char;

        if($char == "a" || $char == "e" || $char== "i" || $char== "o" || $char== "u"){
            $char = strtoupper($char);
        }
        if($char == "aa"){
            $char = 'A';  //When we increase Z it becomes aa so we changed it to A 
        }
        $arr[] = $char;
    }
    //print_r($arr);
    echo implode("",$arr);
}

LetterChanges('hello*3'); 

解释

for循环中,在数组中分别获取每个字符,然后将其增加一个,然后在增加的字符中检查元音,如果它们存在,则更改它们的大写,然后再次将数组更改为简单的字符串。

票数 2
EN

Stack Overflow用户

发布于 2015-09-17 10:26:20

您不能使用像这个=>“++$strArray$i”这样的字符来增加一个字符;为此,您必须首先在php中获得该字符的ascii值,您可以使用ord()函数获得字符的ascii值,然后将该ascii值增加一个,然后使用chr()函数将其转换为字符。

以下是您的问题的完整解决方案:

代码语言:javascript
复制
function LetterChanges($str) {  

// code goes here
$str = strtolower($str);
$strarray = str_split($str);
$newarray = array();
for($i=0; $i<count($strarray); $i++) {
  if(ord($strarray[$i])>=97 && ord($strarray)<=122) {
      $newarray[$i] = chr(ord($strarray[$i])+1);
  } else {
      $newarray[$i] = $strarray[$i];
}
if($newarray[$i]=='a' || $newarray[$i]=='e' || $newarray[$i]=='i' || $newarray[$i]=='o' || $newarray[$i]=='u') {
    $newarray[$i] = strtoupper($newarray[$i]);
}
}

$str = implode('',$newarray);

return $str; 

}

票数 0
EN

Stack Overflow用户

发布于 2015-09-17 10:30:27

试试这个..。看起来不错

代码语言:javascript
复制
<?php 

 function LetterChanges($str) {  

 $strlen = strlen( $str );

 $out = '';
 for($i = 0; $i <= $strlen; $i++) {
    $char = substr($str,$i,1);
  if(!is_numeric($char)) {
        $nextChar = ++$char;    
        if (strlen($nextChar) > 1) { // if you go beyond z or Z reset to a or A
            $nextChar = $next_ch[0];
        }
    if(in_array($char,array('a','e','i','o','u'))) {
        $nextChar = strtoupper($nextChar);
    }
  }
  else {
    $nextChar = $char;
  }

  $out .= $nextChar;

}
$str = $out;


// code goes here
return $str; 

}

// keep this function call here  
// to see how to enter arguments in PHP scroll down
echo LetterChanges(fgets(fopen('php://stdin', 'r')));  

?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32627315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档