Ich lerne PHP und wollte Rekursion ausprobieren. Ich habe eine Funktion gemacht, die ein Wort bekommt, und wenn ihre Länge mehr als 30 Zeichen beträgt, teilt sie sie in zwei Hälften. Und ich habe eine Rekursion gemacht, also wenn eine von einer Hälfte über 30 Wörter ist, teilt sie es auch und so weiter.Rekursion funktioniert nicht wie erwartet
function breakLongWords($val) {
$array = explode(" ", $val);
foreach ($array as $key => $word) {
if (strlen($word) > 30) {
for ($i = strlen($word) + 1; $i >= round(strlen($word)/2); $i--) {
$word[$i+1] = $word[$i];
if ($i == round(strlen($word)/2)) {
$word[$i] = " ";
}
}
breakLongWords($word);
$array[$key] = $word;
}
$result = implode(" ", $array);
}
var_dump($result);
}
$str = "SuperDuperExtraGiggaDoubleTrippleSpicyWithCheeseLongUnlimitedString123";
breakLongWords($str);
Ich teste es in repl.it mit var_dump Funktion aus. Irgendwie ist das letzte Ergebnis ein Eintragswort, das in zwei anstatt vier Hälften geteilt ist (70 Zeichen). Eine der "var_dumps" druckt jedoch das korrekte Ergebnis.
string(37) "SuperDuperExtraGigg aDoubleTrippleSpi"
string(35) "cyWithCheeseLongUn limitedString123"
string(73) "SuperDuperExtraGigg aDoubleTrippleSpi cyWithCheeseLongUn limitedString123"
string(71) "SuperDuperExtraGiggaDoubleTrippleSpi cyWithCheeseLongUnlimitedString123"
Können Sie mir bitte helfen, dieses Problem zu lösen?
https://repl.it/repls/SeveralBountifulCub
Bitte werfen Sie einen Blick auf diese Frage verwenden: https://stackoverflow.com/questions/2648968/ Was ist eine rekursive Funktion in PHP? Sie haben mehrere Fehler in Ihrem Code. – 1stthomas
Warum verwenden Sie explodieren? –
@KshitijKumar String, den die Funktion empfängt, kann mehr als ein Wort enthalten. Also konvertiere ich String zu Array von Wörtern und überprüfe jeden von ihnen. –