invalid argument for each

haunt

Lieutenant
Registriert
Juni 2010
Beiträge
584
Hallo zusammen,
ich habe ein kleines Problem. Ich versuche Daten via einer API auszulesen. Das hat eigentlich auch immer geklappt. Nun bekomme ich folgende Meldung:
Warning: Invalid argument supplied for foreach() in ... : eval()'d code on line 45

Code:
curl_setopt_array($curl, array(
  CURLOPT_URL => "https://...",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "content-language: en_US",
    "authorization:Bearer ...",
    "cache-control: no-cache"
  ),
));

$response = curl_exec($curl);
$result = json_decode($response,true);

Die Daten werden auch brav in $response geladen und ich kann diese Auslesen

Hier bekomme ich aber die Meldung:
PHP:
foreach ($result as $element) {
  foreach($element as $key => $value){

// Prüfung ob es sich um ein Aktuelles Fahrzeug handelt
$Vergleich = $result['vehicleList'][$i]["modifyTimestamp"];
    if ($Vergleich > $minus14day_time ) {
        echo '<tr><td>' . $result['vehicleList'][$i]["id"] .'</td>';
    echo '<td >' . $result['vehicleList'][$i]["make"] . '</td>';
    echo '<td >' . $result['vehicleList'][$i]["model"] . '</td>';
    echo '<td >' . $result['vehicleList'][$i]["deviceId"] . '</td>';
    echo '</tr>';
   
    }
$i++;
  }

Stehe da aber gerade auf dem Schlauch was das sein könnte...
 
Wie soll man das nach vollziehen können?

Oben schreibst du $response = aber im foreach willst du $result

Wenn es das nicht ist dann fehlt der Zusammehang in deinem Beitrag und die Zeilennummern stimmen nicht und eval() ist da so wie so nicht zu sehen d.h. das ganze wird in einer Umgebung ausgeführt

Bau Debug Meldungen ein lass dir Variablen ausgeben bevor du mit foreach drüber gehst dann siehst du es vom Code anstarren hat man noch keine Fehler behoben debugmeldungen sind das wichtigste überhaupt
 
  • Gefällt mir
Reaktionen: netzgestaltung und kim88
Wenn Du schon foreach Element as key => value sagst, dann verwende das auch 😁
Schau mal ins Ergebnis rein, was tatsächlich in den JSON-Daten steht (also vor dem Decode). Mit Pech hast Du zB ein Abfragelimit überschritten und nun steht nicht mehr das in den Daten drin, was Du erwartest.
 
Das ist nicht mein Kerngebiet :)

Wie war das nochmal, man konnte sich doch in der Konsole das Array anzeigen lassen. print_r und var_dump. war es nicht.

Mit print_r und var_dump sehe ich auf jeden Fall das Array.

Danke schon mal für die Antworten. @kieleich das foreach ist quasi Zeile 45. Da ist nochmal Code dazwischen. Da ich aber die Progammiersprache nur minimal behebe wollte ich mir Schimpf und Schande ersparen :D:D
 
Dann zur Sicherheit: Machst Du was mit dem $i, oder ist das undefiniert? Ich seh es zumindest nirgendwo angelegt.

Halte es aber für sinnvoller, die Schleife(n) nochmal zu überarbeiten. Foreach zum einen und einen Index zum zweiten ist normalerweise Käse:
entweder for ($i = 0;i<$list->length; $i++) { operate on $list[$i]}
oder foreach($element in $list) {operate on $element}.

Wenn jetzt wirklich Du nur die vehiclelist brauchst und ich grad nichts übersehe, dann geht die Schleife eh schief. Denn die äußere Schleife iteriert genau da drüber und nur ein einzelner Durchlauf hätte die vehiclelist überhaupt erstmal.
 
  • Gefällt mir
Reaktionen: netzgestaltung
$i ist mein Counter, nach jedem Durchlauf wird $i um eins erhöht um das nächste Array Element auslesen zu können.

Habe das ganze vor ca. einem Jahr geschrieben, kann jetzt auch nicht mehr nachvollziehen was ich mit der Schleife machen wollte. Im Endeffekt wollte ich eine Prüfung um alle was Älter als x ist rauszufiltern.

Ich denke ja, Du hast Recht. Sollte ich nochmal überarbeiten :)
 
haunt schrieb:
$i ist mein Counter, nach jedem Durchlauf wird $i um eins erhöht um das nächste Array Element auslesen zu können.
nur das Auslesen sollte ja die Schleife an sich über nehmen für dich

du zählt hier selbst eine $i hoch aber nur in der ausseren Schleife d.h. $i ist in der inneren Schleife, immer gleich und so machst du dein, echo doppelt und dreifach es sei denn, die innere Schleife rennt zufällig auch nur ein mal

du hast da eben schleifen die dir variablen bereitstellen die du dann gar nicht nutzt das ist schon ungewöhnlich
 
Zurück
Oben