Aber jedes Mal, wenn ich versuche zu überspringen, wenn ich keine Ergebnisse habe (ich bekomme eine leere stdClass()), scheitere ich. Ich habe es versucht isset, $content->images != NULL, !$content->images… Ich weiß nicht, wie ich die “Severity: Notice Message: Undefined variable” überspringen soll.
Danke im Voraus.
AKTUALISIEREN:
$content hat mehr Sätze als Bilder, wie $content->_data oder $content->title.
Wenn ich KEINE Bilder in der Datenbank habe und keine Rückkehr von MySQL habe, mache ich das:
Außerdem scheinen Sie die falschen Vergleichsoperatoren für boolesche Werte zu verwenden, Sie sollten also die strengen Standards für den Vergleich verwenden === und nicht ==oder !== und nicht != 🙂
Frohe Weihnachten
Hey! Frohe Weihnachten! Ich habe die Frage aktualisiert. Ich verstehe nicht warum, wenn ich zähle ($content->images); ohne Eintrag gibt mir 1 zurück… Vielen Dank im Voraus!
– ipalaus
24. Dezember 2010 um 19:31 Uhr
versuchen und print_r($content) um zu sehen, was es zeigt, vielleicht ist das Problem tatsächlich $content->images[0] die dann das Array enthält!
Reflexionen sollten in meiner Meinung nach in größerem Umfang verwendet werden, finden Sie nicht, dass das ein wenig sperrig ist, wenn Sie Funktionen wie haben isset,empty,count,is_(array|object|scaler) ?
– Robert Pitt
24. Dezember 2010 um 19:46 Uhr
klar
Ich weiß, dies ist eine alte Frage, aber sie wurde immer noch nicht richtig beantwortet.
issetnur testet, ob ein Schlüssel existiert und nicht, wenn es null ist. Dies ist eine wichtige Unterscheidung. Siehe die Beispiele: http://us1.php.net/isset
Um richtig zu testen, ob ein Array einen Schlüssel enthält, array_key_exists sollte wie an anderer Stelle auf dieser Seite angegeben verwendet werden.
Um andererseits zu testen, ob ein Objekt eine Eigenschaft enthält, wird die property_exists Methode verwendet werden soll. property_exists() kehrt zurück TRUE auch wenn das Grundstück a NULL Wert.
Ihr Code sollte also so aussehen (ja, ich habe ihn ein wenig geändert, aber der Punkt bleibt derselbe):
Auf diese Frage/Antworten gestoßen, als ich versuchte herauszufinden, wie man nach einer leeren stdClass sucht.
Die gegebenen Antworten sind nicht wirklich Antworten auf die Frage im Thema, was die Leute hierher führt, die keine klare Antwort bekommen, also füge ich eine verbesserte Version hinzu:
Frage:
Überprüfen Sie, ob ein stdClass-Objekt „Einträge“ in PHP hat
Antworten:
Geben Sie die stdClass in ein Array um, siehe unten:
$someObject = new StdClass();
var_dump(empty($someObject)); // Will return false, because $someObject is an stdClass
// Convert to array
$someObjectArr = (array)$someObject;
var_dump(empty($someObjectArray)); // Will return true
Dies löste auch mein Problem. Ich musste überprüfen, ob ein Objekt einen Eigenschaftssatz hat, auch wenn er null ist. Ich habe array_key_exists als Vervollständigung Ihrer Lösung verwendet. +1. Vielen Dank
– Liglo-App
18. November 2013 um 9:38 Uhr
In Ihrem Fall schlage ich vor, nicht zu verwenden array_key_existsaber isset($array[$index]). Letzteres ist viel schneller, siehe: stackoverflow.com/questions/6337893/… für weitere Details.
– Damien Overem
18. November 2013 um 12:32 Uhr
@DamienOvereem verwendet isset erkennt das Vorhandensein einer Eigenschaft, die auf null gesetzt ist.