PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Buchstabenreihenfolge sortieren (https://www.php-resource.de/forum/php-developer-forum/106352-buchstabenreihenfolge-sortieren.html)

maclinux 23-09-2018 17:55

Buchstabenreihenfolge sortieren
 
Hallo Forum,

ich habe vor etwas längerer Zeit mit PHP beschäftigt und kenne zu jeden normalen Problem eine Lösung, wenn auch nicht perfekt.

Diesmal möchte ich PHP nicht für irgendeine Webapplication benutzen, sondern auf meinen Desktop PC.

Es geht dabei um folgendes - Erstellung eines Permutations-Schlüssel wie folgt:

A L A D I N
1 5 2 3 4 6

Das erste A bekommt die 1 zugewiesen, das zweite A die 2, das D die 3, das I die 4, das L die 5 und zuletzt das N die 6, also in der Reihenfolge des Alphabets

Bei kurzen Permutations-Schlüssel, die aus z.B. 6 Buchstaben bestehen, mag das ganze noch einfach per Bleistift und Papier funktionieren. Hat aber ein Schlüssel die Länge von 21 oder gar 31 Buchstaben, dann fällt sie Sache ziemlich fehleranfällig aus und muss mindestens 3 mal überprüft werden.

Um die Buchstaben zumindest nummerisch zu sortieren, habe ich mit

PHP-Code:

<?php
  
switch ($_GET["1"])
  {
  case (
"a"):
  echo 
"1";
  break;
 
  case (
"b"):
  echo 
"2";
  break;
  
  case (
"c"):
  echo 
"3";
  break;
 
  case (
"d"):
  echo 
"4";
  break;
  
  case (
"e"):
  echo 
"5";
  break;
 
  case (
"f"):
  echo 
"6";
  break;
..............
  }
  
?>

und folgendes Formular benutzt

PHP-Code:

<?php
include 'test1.php';
include 
'test2.php';
include 
'test3.php';
include 
'test4.php';
include 
'test5.php';
include 
'test6.php';
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="get"> 
<label for="1">1<input type="text" id="1" name="1"> </label> 
<label for="2">2<input type="text" id="2" name="2"> </label>
<label for="3">3<input type="text" id="3" name="3"> </label> 
<label for="4">4<input type="text" id="4" name="4"> </label>
<label for="5">5<input type="text" id="5" name="5"> </label> 
<label for="6">6<input type="text" id="6" name="6"> </label>
<input type=submit name="submit" value="abschicken">
 
</form>

Es wird die Reihenfolge der Buchstaben im Alphabet angezeigt, also bei Aladin z.B. 1, 12, 1, 4, 9, 14.
Dazu habe ich eine Hauptdatei (test.php mit einen Formular (6 Felder) und 6 PHP-Dateien (test1.php,
test2.php, test3.php, test4.php, test5.php und test6.php) angelegt.

Wie kann ich das ändern?

MfG maclinux

chorn 24-09-2018 13:45

Ganz stumpf: Geh jeden Buchstaben des Alphabets durch. Für jeden Buchstaben gehst du jeden Buchstaben des Strings durch. Dann kannst du bei jedem Treffer einen Counter hochsetzen und dessen Wert in ein drittes Array unter dem Index des Buchstaben im String ablegen.

maclinux 24-09-2018 13:54

Hallo chorn,

wie würde das ungefähr aussehen?
Ich bin die letzten 2 Wochen sämtliche Tricks durchgegangen.

Mit den Zähler hochsetzen (Bei dem Beispiel ALADIN das doppelte A) okay, aber wie bekomme ich es hin, dass das D die dritte Reihenfolge bekommt
usw.?

Wie gesagt, bisher waren die Anforderungen für Webapplikationen relativ
gering, aber mein Privatprojekt bewegt sich auf ein ganz anderes Level.

MfG maclinux

chorn 24-09-2018 14:36

Zitat:

wie würde das ungefähr aussehen?
Array mit Alphabet, Array mit Buchstaben aus String, Zähler und leeres Ziel-Array. Dann zwei verschachtelte Schleifen, eine Bedingung, eine Zuweisung und eine Operation auf dem Zähler.

Zitat:

aber wie bekomme ich es hin, dass das D die dritte Reihenfolge bekommt
Wie beschrieben: Du gehst vornehmlich das Array mit dem Alphabet durch. Das zweite gefundene A bekommt dann die 2, und da du nur Treffer zählst bekommt das D die 3.


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:33 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG