Können Sie den Ternary Operator in PHP ohne die abschließende "else" -Anweisung verwenden? Ich habe es versucht und es gibt Fehler zurück. Google-Suche ergibt nichts, also denke ich, dass die Antwort wahrscheinlich nein ist. Ich wollte das hier nur überprüfen. Zum Beispiel:Verwenden von Ternary Operator ohne Else-Anweisung PHP
Wird nur $ new_variable setzen, wenn $ test existiert. Jetzt kann ich
$new_variable = (isset($testing) ? $testing : "");
aber das gibt eine leere Variable für $ new_variable wenn $ Tests nicht festgelegt ist. Ich möchte keine leere Variable, wenn sie nicht gesetzt ist. Ich möchte, dass die $ new_variable nicht erstellt wird.
Ich versuchte
$new_variable = (isset($testing) ? $testing);
und es zurück Fehler. Ich versuchte auch
$new_variable = (isset($testing) ? $testing :);
und es gab auch Fehler zurück. Gibt es eine Möglichkeit, den Ternary Operator ohne die angehängte else-Anweisung zu verwenden, oder bin ich dabei, es aus der Hand zu schreiben?
BEARBEITEN: Nach dem Rat von Rizier123 habe ich versucht, den 'else' Teil der Gleichung auf NULL zu setzen, aber es fügt immer noch einen Schlüssel zu einem Array hinzu. Der Wert ist nicht da, aber der Schlüssel ist, was meine Pläne durcheinander bringt. Bitte erlauben Sie mir, weiter zu erklären.
Der Code wird eine Reihe von $ _POST-Variablen aus einem Formular nehmen und sie für Parameter in einer stdClass verwenden, die dann für API-Methodenaufrufe verwendet wird. Einige der Formularvariablen sind nicht vorhanden, da sie alle auf die gleiche Variable für den API-Aufruf angewendet werden, der Benutzer jedoch nur einen auswählen kann. Als ein Beispiel, vielleicht können Sie 3 Elemente auswählen, welches Objekt Sie auch an die stdClass übergeben und die anderen 2 nicht existieren.
ich das versucht:
$yes_this_test = "IDK";
$setforsure = "for sure";
$list = new stdClass;
$list->DefinitelySet = $setforsure;
$list->MaybeSet = (isset($yes_this_test) ? $yes_this_test : NULL);
$list->MaybeSet = (isset($testing) ? $testing : NULL);
print_r($list);
Aber offensichtlich wird MaybeSet auf NULL gesetzt, weil (isset (testing $) kommt nach (isset ($ yes_this_test) und es gibt
stdClass Object ([DefinitelySet] => for sure [MaybeSet] =>)
ich gewonnen‘ Ich weiß nicht, in welcher Reihenfolge die $ _POST-Variablen kommen, also kann ich sie nicht so strukturieren, dass die Liste in der richtigen Reihenfolge verarbeitet wird.
Jetzt weiß ich, dass ich etwas tun kann
Aber ich hatte gehofft, dass es eine Kurzschrift für diese Art von Logik gibt, wie ich Dutzende von diesen schreiben muss. Gibt es einen Operator, der dem Ternary Operator ähnelt, der für if/elsif-Anweisungen verwendet wird?
Eine andere Option ist die if-Anweisung ohne die geschweiften Klammern. Es könnte auf einer Linie ähnlich einer ternären auch sein. 'if (isset ($ testing)) $ new_variable = $ testing;'. IMO Ich mag es nicht, wenn ich ohne geschweifte Klammern sage, dass es möglich ist. IMO wäre es besser, es einfach auf NULL zu setzen, wie es Rizier andeutet, denn isset wird false zurückgeben, wenn der Wert NULL ist. 'isset ($ nullVar)' gibt false zurück. –
Mögliches Duplikat von [Ternary Operators. Möglich für eine einseitige Aktion?] (Http://stackoverflow.com/questions/14520949/ternary-operators-possible-for-a-onesided-action) –