1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Was ist zu tun bei "PHP Warning: Invalid argument supplied for foreach()"

Dieses Thema im Forum "Installation" wurde erstellt von joelamann, 12. April 2014.

Schlagworte:
  1. joelamann

    joelamann Member

    Registriert seit:
    15. Oktober 2013
    Beiträge:
    24
    Zustimmungen:
    0
    Ich bekomme in den error-logs immer folgende Fehlermeldungen und weiss nicht was ich machen soll, da bin ich zu sehr Laie . . . auffällig ist, das es immer die Zeile 571 und 612 ist.

    Hier die Zeile 571 (für 612 gilt dasselbe):

    571 foreach( $value['options'] as $key => $option ) {
    572 $i++;
    573 $checked = '';
    574 $key = it_get_slug($key,$key);


    Bitte dringend um Hilfe. Danke.


    12.04.2014 11:24:17 ilovecycling.de [client 90.153.38.0] PHP Warning: Invalid argument supplied for foreach() in /mnt/weba/a3/68/5676668/htdocs/WordPress_01/wp-content/themes/explicit/functions/admin/option-generator.php on line 612, referer: http://ilovecycling.de/wp-admin/edit.php?post_status=all&post_type=post&action=-1&m=0&cat=1&paged=1&mode=list&action2=-1
    12.04.2014 11:26:06 ilovecycling.de [client 90.153.38.0] PHP Warning: Invalid argument supplied for foreach() in /mnt/weba/a3/68/5676668/htdocs/WordPress_01/wp-content/themes/explicit/functions/admin/option-generator.php on line 571, referer: http://ilovecycling.de/literatur/buch-tipp-krafttraining-im-radsport/
    12.04.2014 11:26:06 ilovecycling.de [client 90.153.38.0] , referer: http://ilovecycling.de/literatur/buch-tipp-krafttraining-im-radsport/
    12.04.2014 11:26:06 ilovecycling.de [client 90.153.38.0] 1 messages repeated, referer: http://ilovecycling.de/literatur/buch-tipp-krafttraining-im-radsport/
     
    #1 joelamann, 12. April 2014
    Zuletzt bearbeitet: 12. April 2014
  2. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Dabei handelt es sich nur um die Zeilen mit den Funktionen, in denen die Fehler bemerkt werden, zum Beispiel weil ein Schlüssel fehlt oder nicht ins Schlüsselloch passt. Es handelt sich aber nicht um die Zeilen, in denen ein Schlüssel beschädigt wurde oder verloren ging. Allgemein setzt man dazu vorher noch eine Abfrage, die erst einmal überprüft, ob ein Schlüssel vorhanden ist und führt die Funktionen in diesen Zeile nur aus, wenn ein unbeschädigter Schlüssel vorhanden ist.

    Gibt noch eine Alternative mit @, für WP würde ich die nicht empfehlen, desshalb schreibe ich mal lieber nicht wie es geht. Der Entwickler oder Programmierer, der das entwickelt hat, sollte aber schon wissen, was zu tun ist.

    Also einfacher, options gingen vorher verloren oder wurden vorher beschädigt und foreach meckert nun, was für ein Zeug Du ihr andrehen möchtest.
     
    #2 Melewo, 12. April 2014
    Zuletzt bearbeitet: 12. April 2014
  3. Nevery

    Nevery Well-Known Member

    Registriert seit:
    15. Oktober 2013
    Beiträge:
    404
    Zustimmungen:
    0
    Tendenziell erscheint DIE Fehlermeldung wenn das übergebene kein array ist - vorher mal auf isset und is_array überprüfen, nur wenn beides positiv ist ins foreach gehen.
     
  4. joelamann

    joelamann Member

    Registriert seit:
    15. Oktober 2013
    Beiträge:
    24
    Zustimmungen:
    0
    Hallo ihr Beiden, danke für die schnelle Antwort,

    habe mal mittlerweile folgendes probiert und die beiden Zeilen mit folgendem Code ersetzt:

    The old line 571 and 612:

    foreach( $value['options'] as $key => $option ) {

    The new Line 571 and 612:
    foreach ((array) $value['options'] as $key => $option ) {

    Bisher habe ich keine weitere Fehlermeldung bekommen, oder habe ich jetzt grundsätzlich etwas falsch gemacht?
     
  5. joelamann

    joelamann Member

    Registriert seit:
    15. Oktober 2013
    Beiträge:
    24
    Zustimmungen:
    0
    Hi Nevery,

    danke für Deine Antwort, aber ich bin dann doch zu sehr Laie ;)

    Wie und wo prüfe ich auf isst und is_array?

    Habe mal mittlerweile folgendes probiert und die beiden Zeilen mit folgendem Code ersetzt:

    The old line 571 and 612:

    foreach( $value['options'] as $key => $option ) {

    The new Line 571 and 612:
    foreach ((array) $value['options'] as $key => $option ) {

    Bisher habe ich keine weitere Fehlermeldung bekommen, oder habe ich jetzt grundsätzlich etwas falsch gemacht?
     
  6. joelamann

    joelamann Member

    Registriert seit:
    15. Oktober 2013
    Beiträge:
    24
    Zustimmungen:
    0
    Hi Nevery,

    danke für Deine Antwort, aber ich bin dann doch zu sehr Laie :wink:

    Wie und wo prüfe ich auf isset und is_array?

    Habe mal mittlerweile folgendes probiert und die beiden Zeilen mit folgendem Code ersetzt:

    The old line 571 and 612:

    foreach( $value['options'] as $key => $option ) {

    The new Line 571 and 612:
    foreach ((array) $value['options'] as $key => $option ) {

    Bisher habe ich keine weitere Fehlermeldung bekommen, oder habe ich jetzt grundsätzlich etwas falsch gemacht?
     
  7. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Würde ich vorher prüfen, wie Nevery schrieb, alles eine Frage der Sicherheit bei WP, sonst könntest Du ja gleich
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    schreiben, um keine Fehlermeldungen mehr zu erhalten. Beides würde nicht die Frage beantworten, warum etwas nicht richtig übergeben wird und würde im schlimmsten Fall nur das was nicht richtig übergeben wurde, dennoch irgendwie verarbeiten. Nicht so, dass ich noch nie eine Typumwandlung machte, doch dann wusste ich auch warum und weshalb.
     
    #7 Melewo, 12. April 2014
    Zuletzt bearbeitet: 12. April 2014
  8. joelamann

    joelamann Member

    Registriert seit:
    15. Oktober 2013
    Beiträge:
    24
    Zustimmungen:
    0
    Hi Melewo,

    danke für deine Rückmeldung . . . aber wie und wo prüfe ich das??? Entschuldige für die Frage, aber ich bin dann doch zu sehr Laie.
     
  9. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Na aber irgendwer muss das doch wohl entwickelt haben und der wird auch wissen, was wo zu prüfen ist und zu verbessern ist.
     
  10. joelamann

    joelamann Member

    Registriert seit:
    15. Oktober 2013
    Beiträge:
    24
    Zustimmungen:
    0
    Die Diskussion mit dem Entwickler ist sehr mühsam . . . laut ihm liegt das am Provider (STRATO).

    Ich habe momentan ja auch noch einen 2ten Beitrag hier im Forum . . . vielleicht sind das zusammengehörige Probleme, ich weiss jetzt einfach nicht mehr weiter und bin für jede Unterstützung dankbar.
     
  11. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    So vielleicht.

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
    #11 Melewo, 12. April 2014
    Zuletzt bearbeitet: 12. April 2014
  12. joelamann

    joelamann Member

    Registriert seit:
    15. Oktober 2013
    Beiträge:
    24
    Zustimmungen:
    0
    . . . und jetzt meine laienhafte Frage . . . wohin und/oder in welche Datei schreibe ich diesen Code?

    Hier die Kopie des jetzigen Codes (der die PHP-Fehlermeldungen bei Strato ausgibt):

    . . . als Datei angehängt.
     

    Anhänge:

    #12 joelamann, 12. April 2014
    Zuletzt bearbeitet: 12. April 2014
  13. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Mein Code ist wohl falsch gewesen, ist ja mehrdimensional und somit sollte es wohl sein wie dieses Beispiel, musste ich erst einmal selbst testen (ohne else verwenden, nehme ich an):

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  14. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Na Du wickelst die als Mantel um die foreach.

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Wenn auch das nichts wird, dann frage halt den Entwickler, der hatte vor zwei Monaten eine ähnliche Frage gestellt bekommen und wollte das innerhalb von 24 Stunden beheben.
     
    #14 Melewo, 12. April 2014
    Zuletzt bearbeitet: 12. April 2014
  15. joelamann

    joelamann Member

    Registriert seit:
    15. Oktober 2013
    Beiträge:
    24
    Zustimmungen:
    0
    Jetzt habt ihr mich gleich geschafft . . . ;)))

    Ich habe zuletzt eine Datei mit angehängt (option-generator-php), wie und wo integriere jetzt den Code? . . . oder könnte jemand von Euch die Datei so aufbereiten, dass ich sie gebrauchen kann?
     
  16. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Und der Entwickler weiß nicht wo für der sein Geld verdient oder was?
     
  17. joelamann

    joelamann Member

    Registriert seit:
    15. Oktober 2013
    Beiträge:
    24
    Zustimmungen:
    0
    . . . tja der Entwickler ist ein Entwickler der für Themeforest arbeitet . . . und immer wieder behauptet, dass es ein Fehler beim Provider ist und nicht ein Fehler im Theme.
     
  18. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    So etwas lässt sich nicht mit einer einzelnen Datei testen, dazu müsste man sich das ganze Theme installieren, um zu schauen, wie was zusammen spielt, denn immerhin handelt es sich um eine ausgewachsene Datei mit einer ausgewachsenen Klasse itOptionGenerator, in der $value['options'] rund 40mal vorkommt und die foreach so wie in dieser Zeile

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    noch 9 oder 10 mal vorkommt, es aber scheinbar nur in der

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    zu Problemen kommt, in den anderen Methoden hingegen nicht. Somit kann eine einfache if möglichweise auch versagen, weil ja irgendetwas in options immer enthalten sein könnte, nur nicht unbedingt das was eigentlich erwartet wurde. Das ist keine kleine Hilfe zur Selbsthilfe mehr, das würde in richtige Arbeit ausarten, die nicht in kurzer Zeit zu bewältigen wäre. Beim Entwickler des Themes ist das etwas anderes, der brauchte nicht erst einmal zwei Wochen, bevor der wüsste, warum was wie geschrieben wurde.
    Und wenn Du es selbst machen möchtest, könnte zuerst print_r Freund und Helfer werden, um immer wieder zu kontrollieren, was da eigentlich wann enthalten ist.
     
  19. Nevery

    Nevery Well-Known Member

    Registriert seit:
    15. Oktober 2013
    Beiträge:
    404
    Zustimmungen:
    0
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Die ersten zwei Zeilen und die letzte beachten - so um den entsprechenden Code herum setzen. Das dazwischen ist der Originalcode - wenn, wie gesagt, das Problem dadurch auftritt dass das foreach etwas durchgehen soll was kein Array ist wird das dadurch vermieden.

    Alternativ andersherum prüfen und wenns nicht passt aus der Funktion herausspringen, dafür müsstest Du diese beiden Zeilen VOR das foreach setzen:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  20. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Unterschied, falls keine Optionen gespeichert bzw. an die Klasse oder Methode als gefülltes Array übergeben wurden.

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden