zu erhalten Geben Sie einen beliebigen Buchstaben von a bis z, was ist der effizienteste Weg, um den nächsten Buchstaben im Alphabet mit PHP zu bekommen?Der effizienteste Weg, um den nächsten Buchstaben im Alphabet mit PHP
Antwort
Der effizienteste Weg, diese Meinung in meiner tut, ist zu nur das String-Variable zu erhöhen.
$str = 'a';
echo ++$str; // prints 'b'
$str = 'z';
echo ++$str; // prints 'aa'
Wie 'z'
gibt 'aa'
gesehen erhöht wird, wenn Sie das nicht wollen, sondern zurücksetzen möchte ein 'a'
Sie die Länge des resultierenden Strings überprüfen können einfach zu bekommen, und wenn seine >1
es zurückgesetzt.
$ch = 'a';
$next_ch = ++$ch;
if (strlen($next_ch) > 1) { // if you go beyond z or Z reset to a or A
$next_ch = $next_ch[0];
}
Nun, es hängt davon ab, was genau Sie mit den "Rand Fällen" tun wollen. Welches Ergebnis erwarten Sie, wenn das Zeichen z
oder Z
ist? Möchten Sie den nächsten Brief des gleichen Falls oder nur den nächsten Buchstaben, Punkt?
Ohne die Antwort darauf zu wissen, für den sehr einfachen Fall können Sie nur dies tun:
$next_character = chr(ord($current_character) + 1);
Aber wenn man sich Z
ist wird diesen Ihnen [
geben, und z
geben Ihnen {
, nach ASCII-Werten.
Edited per Kommentar:
Wenn Sie das nächste Zeichen des gleichen Fall benötigen, können Sie wahrscheinlich fügen Sie einfach einfache Überprüfungen nach der Zeile oben:
if ($next_character == '[')
$next_character = 'A';
else if ($next_character == '{')
$next_character = 'a';
Dies sind sehr einfache Operationen, ich würde mir in einem solchen Fall keine Gedanken um Effizienz machen.
Ich möchte den nächsten Brief mit dem gleichen Fall. Wenn das Zeichen "z" ist, erwarte ich "a". –
Wäre es nicht schneller, "A" oder "a" sofort zurückzugeben, wenn das Zeichen "Z" oder "Z" ist? –
Es hängt davon ab, was Sie tun möchten, wenn Sie Z getroffen, aber Sie haben ein paar Optionen:
$nextChar = chr(ord($currChar) + 1); // "a" -> "b", "z" -> "{"
Sie auch die Verwendung von PHP range()
Funktion machen könnte:
$chars = range('a', 'z'); // ['a', 'b', 'c', 'd', ...]
Wie wäre es mit ord() and chr()?
<?php
$next = chr(ord($prev)+1);
?>
Da ich über Kleinbuchstaben in diesem Fall nur kümmern, werde ich den folgenden Code verwenden, auf der Grundlage der hier gepostet Antworten:
function nextLetter(&$str) {
$str = ('z' === $str ? 'a' : ++$str);
}
Danke für die Hilfe, Jungs!
$val = 'z';
echo chr((((ord($val) - 97) + 1) % 26) + 97);
Nice and easy :-)
und für 'Z' ist es $ Next = chr (((ord ($ c) - 65) + 1)% 26) + 65); 'dh ord ('A') – loretoparisi
ein Array aller Buchstaben erstellen, für die bestehenden Buchstaben suchen und ihren nächsten Brief zurück. Wenn Sie den letzten Buchstaben erreichen, geben Sie den ersten Buchstaben zurück.
- 1. PHP Großbuchstaben ersten Buchstaben aus dem ALPHABET
- 2. Schnellste Weg, um das Alphabet
- 3. Der effizienteste Weg, um dies PHP-Skript zu tun
- 4. Wie erhöhe ich eine Variable zum nächsten oder vorherigen Buchstaben im Alphabet?
- 5. Der effizienteste Weg, um eine mehrsprachige Website zu erstellen
- 6. Was ist der effizienteste Weg, um Analytics Beacons zu speichern?
- 7. Was ist der effizienteste Weg, um große Datenmengen mit Javascript/jQuery im IE zu verwalten?
- 8. PHP effizienteste Weg zwischen Servern kommunizieren
- 9. Reiniger Alphabet Array in PHP
- 10. Was ist der effizienteste Weg, um den Quellcode der Webseite in C zu erhalten?
- 11. Der effizienteste Weg, Sprachdateien in PHP zu erstellen?
- 12. Der effizienteste Weg, um mehrere Drucker programmatisch zu installieren
- 13. Der effizienteste Weg, um einen Vektor in Matlab zu wiederholen
- 14. Ersetzen Sie Konsonanten in einer Zeichenfolge mit dem nächsten Konsonanten im Alphabet
- 15. Der effizienteste Weg, um java.lang.Long in primitive int zu konvertieren
- 16. Der effizienteste Weg, um einen ungültigen JSON zu beheben
- 17. Der effizienteste Weg, um Inhaltslikes in SQL zu strukturieren
- 18. Ist Drools der effizienteste Weg, um Geschäftsregeln/Logik abzubilden?
- 19. Der effizienteste Weg, um einen Benutzeravatar zu benennen?
- 20. Der effizienteste Weg, um viele Bilder von URL Android
- 21. Der effizienteste Weg, um eine neue Zeile auszugeben
- 22. Der effizienteste Weg, um einen Index in Postgres zu erstellen
- 23. Der effizienteste Weg, um große Dateien in Chunks zu lesen
- 24. Der effizienteste Weg, um verbundene Datensätze zu sammeln?
- 25. Der effizienteste Weg, Xml zu analysieren
- 26. was ist der effizienteste Weg, um eine Liste
- 27. Der effizienteste Weg, um eine Guid in C#
- 28. Der effizienteste Weg, um Wert in XML-Datei zu suchen?
- 29. Java/Android - Der effizienteste Weg, um viele Variablen zu speichern
- 30. Der effizienteste Weg, um eine Warteschlange zu überwachen
@Mathias gab es einen kleinen Fehler beim Mischen der Vor- und Nachinkrementierung. Ändern Sie es in '$ b = ++ $ a;' – nickf
@Mathias: Meine schlechte ... Sie sollten Pre-Inkrement als verwenden: '$ b = ++ $ a;' @nickf: Danke :) – codaddict
Ihre Codebeispiel ist falsch. '$ next_ch = $ ch ++;' speichert den inkrementierten Wert nicht in '$ next_ch', aber * wird * tatsächlich '$ ch' erhöhen. Verwirrt mich für eine Sekunde :) Toller Tipp, ich wusste nicht, dass das überhaupt möglich war. Definitiv der effizienteste Weg! –