Alles spinnt! Unvorhersehbares Verhalten

  • Ich blick gar nicht mehr durch.
    Meinen Code könnt ich auch posten, aber ich bin mir sicher, dass weder am Syntax noch sonst wo ein Fehler liegt. Das Problem ist, dass alles perfekt funktioniert, außer wenn ich an bestimmten Stellen ein echo statement hinzufüge. Wenn ich das mache, dann friert alles, php.exe verbraucht 99 % der Rechenkapazität und ich muss den Prozess killen. Oder krieg ich einfach die Meldung, dass der php-Interpreter etwas ungültiges gemacht hat und beendet wird. Kommentiere ich dieses echo wieder aus, terminiert das Programm zumindest.
    Das ist die Zeile:

    PHP
    echo "my_array[0]: $my_array[0]";

    Dieses my_array[0] hat am Anfang den Wert 8, und irgendwo bekommt es den Wert 0 (ich kann eben nicht feststellen wo), obwohl ich zu diesem array wirklich nirgends irgendeinen Wert zuweise. Es müsste immer 8 bleiben!

    Hätte jemand eine Idee, was dahinter stecken könnte? Vielleicht hat jemand auch so ein ähnliches Problem gehabt...

    The idea behind this technique is surprisingly simple: just go ahead and do whatever you want to without paying attention to what anybody else is doing. If there is a problem, worry about it later. (Many politicians use this algorithm, too) -- A. S. Tanenbaum, M. v. Steen, Distributed Systems

  • Ich würde damit beginnen, dass ich die Zeile auf

    PHP
    echo "my_array[0]: " . $my_array[0];


    ausbessere ...

    *** Make it idiot proof, and someone will build a better idiot. ***

  • Das ist viel sauberer und hilft schon mal ein wenig. Ist es aber möglich, dass ein echo statement einen Wert ändern kann? Bei mir ist es nämlich jetzt so. Im obigen Beispiel bekommt $my_array[0] einen neuen Wert, wenn ich es mit echo ausgebe. Nach dem echo hat es einen neuen Wert auf einmal. Wenn ich das echo auskommentiere, dann bleibt der alte Wert.
    Genauer gesagt:

    Wenn ich kein echo hab:


    Wenn ich echo hab:


    Und dieses echo ist der einzige Unterschied zwischen beiden Codeteilen. Wie gibt's so was?

    vielleicht hab ich hier einen Fehler, was meint ihr:

    PHP
    // $my_array[0] hat den Wert 8;
    $sum_p = 0;
    for ($n=0;$my_array[$n]!=-1;$n+=4) {
       $sum_p +=  ($my_array[$n]*$my_array[$n]);
    }
    // jetzt hat $my_array[0] einfach keinen Wert oder zufällig einen Wert,
    // also jedes Mal anders. Aber alle anderen Indizes [1][2]... haben die
    // richtigen Werte. Das array sollte immer um 4 Stellen weitergehen, bis
    // -1 kommt. wenn -1 kommt, dann wird die for-schleife verlassen.
    // bei einigen array gibts gar kein Problem, bei anderen doch.


    Ist vielleicht im obigen Code irgendwas schlecht?

    The idea behind this technique is surprisingly simple: just go ahead and do whatever you want to without paying attention to what anybody else is doing. If there is a problem, worry about it later. (Many politicians use this algorithm, too) -- A. S. Tanenbaum, M. v. Steen, Distributed Systems

  • Das heisst, wenn du schreibst:

    Code
    echo "my_array[0]: ".$my_array[0];
    echo "<br>my_array[0]: ".$my_array[0];

    kommt bei der 2.Zeile sofort ein anderer Wert raus??

    Hocus - Pocus, Stop this insanity!

  • Zitat von Flowyes
    PHP
    $sum_p = 0;
    for ($n=0;$my_array[$n]!=-1;$n+=4) {
       $sum_p +=  ($my_array[$n]*$my_array[$n]);
    }


    Also die möchtest alle Elemente von Anfang an durchlaufen bis zum ersten mal -1 auftritt
    Was ist aber wenn kein -1 kommt
    => dann wird weiter gemacht, obwohl das Array keine Elemente mehr hat. Php wirft hier bei mir auch keinen Fehler, sondern hängt einfach in der Schleife fest und ich muss den Prozess killen.

    Ich nehme mal an, Du möchtest einfach alle Elemente durchlaufen, oder?

    PHP
    $sum_p = 0;
    for ($n=0;$n<count($my_array);$n+=4) {
       $sum_p +=  ($my_array[$n]*$my_array[$n]);
    }

    bzw. mit der -1 Abfrage:

    PHP
    $sum_p = 0;
    for ($n=0;$n<count($my_array) && $my_array[$n]!=-1;$n+=4) {
       $sum_p +=  ($my_array[$n]*$my_array[$n]);
    }
  • creature: Es kommt doch kein anderer Wert raus, wenn ich so gleich hintereinander echo ausführe. Aber dieses Problem hab ich schon beseitigt. Ich glaube es hat mit ganz was anderem zu tun gehabt.
    mas: Diesen Fehler hab ich auch erkannt und ausgebessert. Aber ich kann noch immer nicht verhindern, dass der php-Interpreter abstürzt oder sich aufhängt.

    Ich glaube das liegt alles daran, dass ich die experimentellen Java-Extensions (für die es gar keine Garantie gibt, ob die funktionieren und keine gscheite Doku) in meinem php-Code benutze. Es gibt aber nämlich Java-Methoden, die ich aus php aufrufe, die mir diese arrays liefern. Der Java-Code braucht aber ziemlich lange (also für ein Array ungefähr 7 Sekunden oder so), denn er muss komplizierte Bildverarbeitungsprozeduren durchgehen. Jetzt schaut alles sauber aus in php, und schließlich meldet jvm interne Fehler (out of memory und dergleichen).

    Wenn ich diese arrays nicht aus Java nehme, sondern z.B. mit Zufallswerten initialisiere und ganz normal meinen php-script ausführe, terminiert alles in Sekunden.

    Ich muss alles nach Java portieren und hoffe, dass dort alles passt. Danke für die Hilfe!

    The idea behind this technique is surprisingly simple: just go ahead and do whatever you want to without paying attention to what anybody else is doing. If there is a problem, worry about it later. (Many politicians use this algorithm, too) -- A. S. Tanenbaum, M. v. Steen, Distributed Systems

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!