Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Hab mit String ein Problem...

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Hab mit String ein Problem...

    Hallo, ich brauche für die Schleife folgendes:
    Ich brauch jeden einzelnen Buchstaben, der Zeichnkette, dachte ich mir kein Problem, $string[0] ... funktioniert im normalen Bereich auch, doch in der Schleife wirds anders.
    Denn da kommt der Fehler:
    Code:
    Fatal error: Cannot use assign-op operators with overloaded objects nor string offsets
    So, daher, habe ich mal: $string = array("t","e","s","t"); gemacht, und siehe da, es funktioniert.
    Nun wie stell ich das nun an?, $string wird dann über ein Formular eingelesen.


  • #2
    Ohne einen Quellcode ist es wirklich sehr schwer zu sagen, warum dein Fehler auftritt, denn deine Beschreibung ist mal nicht die Beste!

    Kommentar


    • #3
      Hmm ok, da gebe ich dir recht.

      Hier:
      PHP-Code:
      //$password = array("a","b","c");
      $password 'abc';
      for(
      $i=0$i strlen($password); $i++)
      {
          
      $password[$i] = ord($password[$i]);
          
      $password[$i] += (3^$i) * ($i 15);
          if(
      $password[$i] > (0xff))
          {
              
      $password[$i] -= 256;
          }
          
      $password[$i] = chr($password[$i]);

      Wenn das Array verwendet wird, muss anstatt strlen, count verwendet werden. Wollts nur dazu gesagt haben.

      Edit: Mir geht es hier eigentlich nicht um den Fehlercode, sondern eher wie man das ganze in ein Array setzt.
      Übrigens, hier tritt der Fehler auf: $password[$i] += (3^$i) * ($i % 15);

      Kommentar


      • #4
        Der Fehler ist doch in diesem Fall klar: $passwort ist vom Typ String und jedes Zeichen vom Typ Char. In der ersten Zeile der Schleife versuchst du das i-te Zeichen der Zeichenkette durch eine Zahl zu ersetzen und als Zahl weiterzuverarbeiten, aber der Typ der Variable $passwort ist String und erwartet an jeder Stelle ein Zeichen, sodass die Zuweisung und Rechnung nicht gelingt. Nutzt du jedoch einen Array mit Zeichen, dann ist dem Interpreter egal, welche Typen die einzelnen Felder des Arrays haben und du bekommst keine Probleme!

        PHP-Code:
        //$password = array("a","b","c");
        $password 'abc';
        for(
        $i=0$i strlen($password); $i++)
        {
            
        $temp ord($password[$i]);
            
        $temp += (3^$i) * ($i 15);
            if(
        $temp > (0xff))
            {
                
        $temp -= 256;
            }
            
        $password[$i] = chr($temp);

        Ich hoffe meine Erklärung ist halbwegs korrekt, sonst können mich weisere Benutzer gerne korrigieren...

        Kommentar


        • #5
          Aso ok, ich danke dir, klappt wunderbar.
          Hab dann gleich noch eine Frage, kannst du dir diesen Code anschauen:
          PHP-Code:
          while(!feof($file))
          {
              list(
          $desc,$dataset) = split("="fgets($file,128),2);
              
          $data[$desc] = $dataset;
              

          Hier kommt keine Fehlermeldung sondern eine "Ankündigung" bzw. Bemerkung:
          Code:
          Notice: Undefined offset: 1 in C:\wamp\www\ucp\readfile.php  on line 5
          Und wenn ich ehrlich sein soll, ich hab dieses Problem immer mit error_reporting(0) unterdrückt. Da du es aber gut erklären kannst, dachte ich mir, ich frag dich das gleich mal
          EDIT: Zeile 5 ist list($desc...

          Kommentar


          • #6
            Gleich vorweg, die Funktion [MAN]split[/MAN] ist veraltet. Arbeite lieber mit [MAN]explode[/MAN].
            Zum Problem selber: das Array das von deinem split Aufruf zurückgegeben wird beinhaltet nur ein Element. Innerhalb des list Konstruktes erwartest du jedoch 2 Elemente.
            sigpic

            Kommentar


            • #7
              Und wie will man das dann "umgehen", bzw. lösen?, die Zeile hat z.b. Name=MyName
              aufzurufen unter $data['Name']; es funktioniert auch alles.

              Kommentar


              • #8
                Und wie will man das dann "umgehen", bzw. lösen?, die Zeile hat z.b. Name=MyName
                aufzurufen unter $data['Name']; es funktioniert auch alles.
                Kannst Du mal bitte vollständige und verständliche Sätze schreiben?!
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Naja, ich meinte, dass er eine Datei ausliest.
                  Die Datei beinhaltet z.B. die Zeile:
                  Name=MyName

                  Am Schluss kann mann dann mittels $data['Name'] den Wert aufrufen, der eben MyName lautet.
                  Wollte das nur hier klären, falls es Fragen bezüglich gibt. Sorry, dass ich mich so umständlich ausgedrückt habe.

                  Nur mein Anliegen ist es jetzt, wie muss ich den Code ändern, weil es funktioniert im prinzip richtig.

                  Kommentar


                  • #10
                    Anscheinend hast du eine inkoherente Dateistruktur, da das Muster Variablenname=Variableninhalt an mindestens einer Stelle nicht zu stimmen scheint.
                    Entweder du korrigierst diesen Fehler, steigst auf Datenbanken um (je nach Verwendungszweck evtl. ratsam) oder du prüfst vor oder nach dem explode ob die aktuelle Zeile der Datei das entsprechende Format aufweist, das du erwartest.
                    sigpic

                    Kommentar


                    • #11
                      Was genau willst DU denn nun? Jetzt name=wert, oben steht wwas von Passwort und ord. Jetz ma Butter bei die Fische!
                      --

                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                      --

                      Kommentar


                      • #12
                        split() gibt eben einen Array der Laenge 1 zurueck, dein list () moechte aber zwei haben. Bitte einfach mal genau ueberprufen, was fuer Daten du da parset, PHP erfindet das nicht einfach ^^
                        "Mein Name ist Lohse, ich kaufe hier ein."

                        Kommentar


                        • #13
                          Aso ok, die Dateien haben am Ende alle einmal einen Zeilenumbruch zu viel.
                          Danke für den Hinweis!

                          Kommentar


                          • #14
                            rtrim() drauf
                            "Mein Name ist Lohse, ich kaufe hier ein."

                            Kommentar

                            Lädt...
                            X