Ankündigung

Einklappen
Keine Ankündigung bisher.

String in mehrdimensionalem Array wird ungewollt gekürzt

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • String in mehrdimensionalem Array wird ungewollt gekürzt

    Hallo zusammen,

    ich stehe vor einem Rätsel. Für ein kleines Spiel habe ich folgenden simpel klingenden Plan:

    Ich definiere einen Text in einem mehrdimensionalem Array.
    PHP-Code:
    $dialogarray[1][1]='Halt Fremder! Willkommen in Tiefhusen. Habt Ihr einen Passierschein?'
    $dialogarray[1][2]='Natürlich habe ich einen Passierschein. Hier bitte.'
    usw... 
    Übergebe diesen Text an einen anderen mehrdimensionalen Array (Ausgabearray).
    PHP-Code:
    for($i=1;$i<5;$i++){
        
    $angezeigterdialog[$i][0]=$dialogarray[$dialognummer][$i];
        for(
    $j=1;$j<5;$j++){
            
    $angezeigterdialog[$i][$j]=$dialogarray[$dialognummer][$i][$j]; 
        }    


    Dieser Ausgabearray gibt dann im Spiel meine Dialoge aus.
    PHP-Code:
    <p>Wache: <?php echo $angezeigterdialog[1][0];?></p>

    for($i=2;$i<5;$i++){
        echo "<p>";
        //echo $dialogarray[1][2]; Ausgabetest-> Hier wird der Text schon falsch ausgegeben
        if($angezeigterdialog[$i][0]!=""){echo "Spieler: ".$angezeigterdialog[$i][0];}
        echo "</p>";
    }
    Soweit zum simplen Plan.

    Das Problem:
    aus: $dialogarray[1][2]='Natürlich habe ich einen Passierschein. Hier bitte.';
    wird: "N1rlich habe ich einen Passierschein. Hier bitte."
    Siehe Screenshot im Anhang.

    Erfolglose Problemlösungen:
    - Hochkommatausch von " auf '
    - utf-8 im HTML-Headbereich deklarieren
    - utf-8 im PHP ganz oben deklariert
    - Dokument in utf-8 ohne BOM konvertiert
    - Text ohne Umlaute eingegeben
    - Textausgabe ohne Übergabe von Definitionsarray zu Ausgabearray
    - auf php.net nachgelesen, ob der String dem mehrdimensionalen Array richtig zugewiesen ist (falsche Klammer, Hochkomma, sonstige Schreibfehler)
    - googlesuche / Suche hier im Forum "php array string und Varianten von erster Buchstabe bleibt erhalten aber die kommenden 4-5 Zeichen werden geschluckt"
    - xampp neu gestartet

    Jetzt fällt mir nichts mehr ein und bitte euch um eure Hilfe. Danke im Voraus.
    Angehängte Dateien
    Wir suchen immer nette Medienschaffende für gemeinsame Medienprojekte - [url]www.solitune.de[/url]


  • #2
    PHP-Code:
    $angezeigterdialog[$i][$j]=$dialogarray[$dialognummer][$i][$j]; 
    dein "dialogarray" hat (zumindest im Beispiel oben) keine 3 Dimensionen.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Gut gesehen. Statt der dritten Dimension wird dann auf das entsprechende Zeichen des Strings zugegriffen.

      Aber trotzdem (auch für die Zukunft):

      Kannst du, solitune, das Problem bitte so in ein Minimalbeispiel umformen, dass wir das lokal ausführen können? Bei deiner aktuellen Darstellung fehlt einfach die Hälfte. (Edit: Oder es ist ungeschickt programmiert. Ich meine so Sachen wie den Counter bis 5 im Zusammenhang mit „usw.“ im ersten Codeblock.)

      Kommentar


      • #4
        Vielen Dank für die Hinweise. Der Fehler lag darin, dass ich der Annahme unterlag, dass einarray[1][2] einen Wert haben darf und einarray[1][2][1] komplett unabhängig davon sei. Aber einarray[1][2][1] ist (wie oben von mermshaus erwähnt) der zweite Buchstabe von einarray[1][2].

        Wie gewünscht habe ich von meiner Erkenntnis noch eine Kurzvariante geschrieben.

        PHP-Code:
        $dialogarray[1][1]='Halt Fremder! Willkommen in Tiefhusen. Habt Ihr einen Passierschein?'
        $dialogarray[1][2]='Natürlich habe ich einen Passierschein. Hier bitte.';  
        $dialogarray[1][3]='Kranfahrer. Natürlich habe ich einen Passierschein. Hier bitte.';  
        $dialogarray[1][4]='Kanarienvogel. Natürlich habe ich einen Passierschein. Hier bitte.'
        $dialogarray[1][1][1]="a";
        $dialogarray[1][1][2]="b"
        $dialogarray[1][2][1]="n"
        $dialogarray[1][2][2]="m"
        $dialogarray[1][3][1]="a";
        $dialogarray[1][3][2]="b"
        $dialogarray[1][4][1]="n"
        $dialogarray[1][4][2]="m"

        $dialognummer=1;
        for(
        $i=1;$i<5;$i++){
            
        $angezeigterdialog[$i][0]=$dialogarray[$dialognummer][$i];
            for(
        $j=1;$j<3;$j++){
                
        $angezeigterdialog[$i][$j]=$dialogarray[$dialognummer][$i][$j]; 
            }    


        for(
        $i=1;$i<5;$i++){
            echo 
        "<p>";
            
        //echo $dialogarray[1][2]; Ausgabetest-> Hier wird der Text schon falsch ausgegeben
            
        if($angezeigterdialog[$i][0]!=""){echo "Spieler: ".$angezeigterdialog[$i][0];}
            echo 
        "</p>";


        Vielen Dank für eure schnelle Hilfe!
        Wir suchen immer nette Medienschaffende für gemeinsame Medienprojekte - [url]www.solitune.de[/url]

        Kommentar


        • #5
          Was soll den der Sinn von dieser Variante sein, ich kann den nicht erkennen. Ich meine Texte im Array ist ja schon ok, aber warum die unterschiedlichen Dimensionen und die Buchstaben .. wozu soll das gut sein? Und die Schleife versteh ich auch den Sinn nicht.
          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar

          Lädt...
          X