Problem in Funktion mit if-Abfrage von Array

Jan-Frederik Stieler

Monsterator
Moderator
Hallo,
ich habe innerhalb einer Klasse eine Funktion mit einer if-Abfrage geschrieben
PHP:
…
public function image($product){   
      $image = $product->images;

      if (sizeof($image) > 1)){
          $image = $product->images[1];
      } else {
          $image = $product->images[0];
      }

      return $image->displayMediaFull("",false);
}
…

Wenn ich die Funktion nun aufrufe dann wird der Code mit einem internal Server Error abgebrochen (Weiße Seite).
$product->images gibt ein Array von Bildern aus. Ich möchte überprüfen ob sich in dem Array mehr als ein Bild befindet wenn ja soll das zweite Element ausgegeben werden und ansonsten das erste.

Ich kapier nicht was ich da falsch mache. Wenn ich die if-Abfrage aus der Funktion entferne funktioniert alles einwandfrei aber ich kann eben nicht das zweite Bild ausgeben falls es vorhanden ist.

Ich hab so das doofe Gefühl als ob ich heir einen dummen Anfängerfehler mache :).

Viele Grüße
 
Hallo,

bist du sicher, dass $product->images wirklich ein Array ist? Wenn du nämlich die ganze IF-Bedingung (inkl. ELSE) entferntst, dann funktioniert es nach deiner Aussage, d. h. "$image = $product->images" ist ein einzelnes Bild(-objekt).

Du könntest dies per var_dump() ober (besser) mit einem Debugger überprüfen.
Auf jeden Fall musst du dir die Fehlermeldung ansehen, diese scheinen bei dir nicht ausgegeben zu werden. Schalte dies mal an. (Google: "PHP turn on all errors")
 
Wenn ich die Funktion nun aufrufe dann wird der Code mit einem internal Server Error abgebrochen (Weiße Seite).

Schau mal ins Error-Log des Webservers. Da könnte eine aufschlussreichere Fehlermeldung stehen.

Das heißt in der Regel jedenfalls Syntaxerror.

PHP:
if (sizeof($image) > 1)){

schließende Klammer zu viel

PS: Ich schließe mich ComFreek an. So ganz logisch ist die Aussage mit dem Entfernen der if-Anweisung nicht. (Jedenfalls nicht, wenn man sie wortwörtlich liest. ;))

Edit: Der Klarheit halber: Solche Syntaxfehler treten schon beim Parsen des Codes auf. Die kann man nicht dadurch sichtbar werden lassen, im Skript das Error-Reporting aufzudrehen. Die entsprechenden Zeilen werden nämlich nie ausgeführt. So weit kommt der Interpreter überhaupt nicht.
 
Zuletzt bearbeitet:
Zurück