Voici le code que j'ai jusqu'à présent. Je viens de commencer à apprendre PHP aujourd'hui et je ne sais pas pourquoi mon code ne fonctionne pas.
<?php
function backwards($input)
{
$str = $input;
$revStr = "";
$str = explode(",",$str);
for($x = 0; $x < count($str); $x++){
if($x == count($str) - 1){
$revStr .= strrev($str[$x]);
}
else{
$revStr .= strrev($str[$x]) . ",";
}
}
return $revStr;
}
Toute aide serait grandement appréciée!
edit: Voici un exemple d'entrée
phP,syarrA,lqsyM
voici ce que je voudrais que la sortie soit:
Php,Arrays,Mysql
edit2:
Je l'ai compris. Fait quelques modifications mineures. Je ne sais pas si c'est le code le plus efficace, mais cela fonctionne.
<?php
function backwards($input)
{
$str = $input;
$revStr = "";
$str = explode(",",$str);
for($x = 0; $x < strlen($str); $x++){
$revStr .= strrev($str[$x]);
}
return $revStr;
}
5 Réponses :
Vous vérifiez la longueur de chaîne d'un tableau à l'intérieur de votre boucle for. De plus, une fonction personnalisée n'est pas nécessaire, PHP nous fournit strrev () .
Mais si vous souhaitez utiliser le vôtre:
function backwards($input)
{
$str = $input;
$revStr = "";
$str = explode(",",$str);
for($x = 0; $x < count($str); $x++){
$revStr .= strrev($str[$x]);
}
return $revStr;
}
$string = "Php,Arrays,Mysql";
echo backwards($string);
J'espère que cela vous aidera,
Vous devez utiliser count au lieu de Vous pouvez essayer ce code: strlen code> et doivent également prendre une chaîne inversée en tableau, puis la convertir en chaîne. <?php
function backwards($input)
{
$str = $input;
$revStr = array();
$str = explode(",", $str);
for ($x = 0; $x < count($str); $x++) {
$revStr[] = strrev($str[$x]);
}
return implode(',', $revStr);
}
$str = "Php,Arrays,Mysql";
var_dump(backwards($str));
Modifier, je vois que vous avez maintenant inclus un exemple.
Utilisez array_map et strrev pour inverser les mots.
Utilisez exploser et imploser pour créer un tableau de mots et revenir en chaîne.
echo implode(",", array_reverse(explode(",", $str)));
$str = "apple,orange,tomato";
$arr = explode(",", $str);
$arr =array_reverse($arr);
echo implode(",", $arr); //tomato,orange,apple
Ou , légèrement plus désordonné mais compact:
echo implode(",", array_map(function($part){ return strrev($part);},explode(",", $str)));
utilisez $ str [0] dans la syntaxe de la boucle for.
like this => for($x = 0; $x < strlen($str[0]); $x++)
Bien que ce code puisse répondre à la question, fournir un contexte supplémentaire sur la manière et / ou la raison pour laquelle il résout le problème améliorerait la valeur à long terme de la réponse. Lisez ceci .
Juste quelques modifications et vous obtenez la sortie souhaitée. Vous pouvez utiliser la fonction explode et implode de php avec array_push pour obtenir votre résultat:
<?php
$string = "Php,Arrays,Mysql";
function backwards($input)
{
$str = $input;
$revStr = array();
$str = explode(",", $str);
for ($x = 0; $x < count($str); $x++) {
array_push($revStr, strrev($str[$x]));
}
return implode(',', $revStr);
}
$result =backwards($string);
echo $result;
?>
Pouvez-vous ajouter une chaîne d'exemple
strlen ()renvoie la longueur de la chaîne, ce que vous passez à l'intérieur est un tableau, ce que vous voulez c'estcount ()J'ai ajouté la réponse sur la base du lien fourni, veuillez vérifier.
Pourquoi ne puis-je pas marquer mon titre comme résolu? a >