Wie kann ich eine Bedingung in ein PHP-Array einfügen?

Lesezeit: 4 Minuten

Hier ist das Array

$anArray = array(
   "theFirstItem" => "a first item",
   if(True){
     "conditionalItem" => "it may appear base on the condition",
   }
   "theLastItem"  => "the last item"

);

Aber ich bekomme den PHP-Parse-Fehler, warum kann ich eine Bedingung in das Array einfügen, was ist passiert??:

PHP Parse error:  syntax error, unexpected T_IF, expecting ')'

Leider ist das gar nicht möglich.

Wenn es in Ordnung ist, das Element mit einem NULL-Wert zu haben, verwenden Sie Folgendes:

$anArray = array(
   "theFirstItem" => "a first item",
   "conditionalItem" => $condition ? "it may appear base on the condition" : NULL,
   "theLastItem"  => "the last item"
);

Ansonsten musst du es so machen:

$anArray = array(
   "theFirstItem" => "a first item",
   "theLastItem"  => "the last item"
);

if($condition) {
   $anArray['conditionalItem'] = "it may appear base on the condition";
}

Wenn die Reihenfolge wichtig ist, wird es noch hässlicher:

$anArray = array("theFirstItem" => "a first item");
if($condition) {
   $anArray['conditionalItem'] = "it may appear base on the condition";
}
$anArray['theLastItem'] = "the last item";

Das könntest du aber etwas lesbarer machen:

$anArray = array();
$anArray['theFirstItem'] = "a first item";
if($condition) {
   $anArray['conditionalItem'] = "it may appear base on the condition";
}
$anArray['theLastItem'] = "the last item";

  • zweite scheint beleuchtet

    – Awais fiaz

    14. November 2018 um 14:44 Uhr

  • $anArray = array( “theFirstItem” => “ein erstes Element”, “conditionalItem” => $condition ? “es kann basierend auf der Bedingung erscheinen” : NULL, “theLastItem” => “das letzte Element” ); Es ist perfekt für mich, danke

    – Raman Kant Vashisht

    10. Mai 2019 um 6:06 Uhr


Wenn Sie ein rein assoziatives Array erstellen und die Reihenfolge der Schlüssel keine Rolle spielt, können Sie den Schlüssel immer mit der ternären Operatorsyntax bedingt benennen.

$anArray = array(
    "theFirstItem" => "a first item",
    (true ? "conditionalItem" : "") => (true ? "it may appear base on the condition" : ""),
    "theLastItem" => "the last item"
);

Auf diese Weise existiert der Schlüssel bei Erfüllung der Bedingung mit den Daten. Wenn nicht, ist es nur ein leerer Schlüssel mit einem leeren Zeichenfolgenwert. Angesichts der großen Liste anderer Antworten gibt es jedoch möglicherweise eine bessere Option, die Ihren Anforderungen entspricht. Das ist nicht gerade sauber, aber wenn Sie an einem Projekt mit großen Arrays arbeiten, kann es einfacher sein, als aus dem Array auszubrechen und es anschließend hinzuzufügen; besonders wenn das Array mehrdimensional ist.

Benutzer-Avatar
Azat

Ihr könnt es so machen:

$anArray = array(1 => 'first');
if (true) $anArray['cond'] = 'true';
$anArray['last'] = 'last';

Was Sie wollen, ist jedoch nicht möglich.

Hier hilft keine Magie. Das Beste, was Sie tun können, ist Folgendes:

$anArray = array("theFirstItem" => "a first item");
if (true) {
    $anArray["conditionalItem"] = "it may appear base on the condition";
}
$anArray["theLastItem"]  = "the last item";

Wenn Sie sich nicht speziell um die Reihenfolge der Artikel kümmern, wird es etwas erträglicher:

$anArray = array(
    "theFirstItem" => "a first item",
    "theLastItem"  => "the last item"
);
if (true) {
    $anArray["conditionalItem"] = "it may appear base on the condition";
}

Oder, wenn die Bestellung tut Materie und die bedingten Elemente mehr als ein paar sind, können Sie dies tun, was als lesbarer angesehen werden könnte:

$anArray = array(
    "theFirstItem" => "a first item",
    "conditionalItem" => "it may appear base on the condition",
    "theLastItem"  => "the last item",
);

if (!true) {
    unset($anArray["conditionalItem"]);
}

// Unset any other conditional items here

Versuchen Sie dies, wenn Sie ein assoziatives Array mit unterschiedlichen Schlüsseln haben:

$someArray = [
    "theFirstItem" => "a first item",
] + 
$condition 
    ? [
        "conditionalItem" => "it may appear base on the condition"
      ] 
    : [ /* empty array if false */
] + 
[
    "theLastItem" => "the last item",
];

oder dies, wenn das Array nicht assoziativ ist

$someArray = array_merge(
    [
        "a first item",
    ],
    $condition 
        ? [
            "it may appear base on the condition"
          ] 
        : [ /* empty array if false */
    ], 
    [
        "the last item",
    ]
);

Sie können alle Werte zuweisen und leere Schlüssel auf einmal aus dem Array filtern:

$anArray = array_filter([
   "theFirstItem" => "a first item",
   "conditionalItem" => $condition ? "it may appear base on the condition" : NULL,
   "theLastItem"  => "the last item"
]);

Auf diese Weise können Sie die zusätzliche Bedingung nachträglich vermeiden, die Tastenreihenfolge beibehalten und imo ist es ziemlich lesbar. Die einzige Einschränkung hier ist, dass, wenn Sie andere falsche Werte haben (0, false, "", array()) werden sie ebenfalls entfernt. In diesem Fall möchten Sie möglicherweise einen Rückruf hinzufügen, um explizit darauf zu prüfen NULL. Im folgenden Fall theLastItem wird nicht unbeabsichtigt gefiltert:

$anArray = array_filter([
    "theFirstItem" => "a first item",
    "conditionalItem" => $condition ? "it may appear base on the condition" : NULL,
    "theLastItem"  => false,
], function($v) { return $v !== NULL; });

Benutzer-Avatar
Asim Ansari

Sie können es so machen:

$anArray = array(
    "theFirstItem" => "a first item",
    (true ? "conditionalItem" : "EMPTY") => (true ? "it may appear base on the condition" : "EMPTY"),
    "theLastItem" => "the last item"
);

Setzen Sie das EMPTY-Array-Element zurück, wenn die Bedingung falsch ist

unset($anArray['EMPTY']);

1011890cookie-checkWie kann ich eine Bedingung in ein PHP-Array einfügen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy