我正在努力克服代码字节的挑战,因为我正在向自己传授一些PHP。
我一直在努力完成以下挑战(链接如下)
代码字节挑战
下面是to,我有点困惑,因为它现在用数组的每个字母大写,而不是在'if语句‘中选择的字母。
我渴望学习,不只是简单地想要一个没有解释的答案。如果你能告诉我,我哪里错了,如果我是在做长篇大论的方法。
谢谢你的帮助。
<?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')));
?> 发布于 2015-09-17 10:27:16
您可以使用以下代码
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循环中,在数组中分别获取每个字符,然后将其增加一个,然后在增加的字符中检查元音,如果它们存在,则更改它们的大写,然后再次将数组更改为简单的字符串。
发布于 2015-09-17 10:26:20
您不能使用像这个=>“++$strArray$i”这样的字符来增加一个字符;为此,您必须首先在php中获得该字符的ascii值,您可以使用ord()函数获得字符的ascii值,然后将该ascii值增加一个,然后使用chr()函数将其转换为字符。
以下是您的问题的完整解决方案:
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; }
发布于 2015-09-17 10:30:27
试试这个..。看起来不错
<?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')));
?>https://stackoverflow.com/questions/32627315
复制相似问题