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

  • grexaut
    hat ein Thema erstellt [Erledigt] Hab mit String ein Problem....

    [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.

  • Chriz
    antwortet
    rtrim() drauf

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    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 ^^

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • Frank
    antwortet
    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.

    Einen Kommentar schreiben:


  • grexaut
    antwortet
    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.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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?!

    Einen Kommentar schreiben:


  • grexaut
    antwortet
    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.

    Einen Kommentar schreiben:


  • Frank
    antwortet
    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.

    Einen Kommentar schreiben:


  • grexaut
    antwortet
    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...

    Einen Kommentar schreiben:


  • Sirke
    antwortet
    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...

    Einen Kommentar schreiben:


  • grexaut
    antwortet
    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);

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:

Lädt...
X