How can I add a condition inside a php array?

前端 未结 8 942
小鲜肉
小鲜肉 2020-12-10 00:49

Here is the array

$anArray = array(
   \"theFirstItem\" => \"a first item\",
   if(True){
     \"conditionalItem\" => \"it may appear base on the condi         


        
相关标签:
8条回答
  • 2020-12-10 01:27

    Unfortunately that's not possible at all.

    If having the item but with a NULL value is ok, use this:

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

    Otherwise you have to do it like that:

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

    If the order matters, it'll be even uglier:

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

    You could make this a little bit more readable though:

    $anArray = array();
    $anArray['theFirstItem'] = "a first item";
    if($condition) {
       $anArray['conditionalItem'] = "it may appear base on the condition";
    }
    $anArray['theLastItem'] = "the last item";
    
    0 讨论(0)
  • 2020-12-10 01:28

    There's not any magic to help here. The best you can do is this:

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

    If you don't care specifically about the order of the items, it gets a little more bearable:

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

    Or, if the order does matter and the conditional items are more than a couple, you can do this which could be considered more readable:

    $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
    
    0 讨论(0)
提交回复
热议问题