【问题标题】:if() function inside the array() functionarray() 函数内的 if() 函数
【发布时间】:2020-04-01 22:36:35
【问题描述】:

我想做这样的事情:

 array(

if($condition = "xyz") { array('value' => $a, 'text' => $a), }
                         array('value' => $b, 'text' => $b),
                         ...
);

但它不允许我在那个数组函数中拥有那个 if 函数?我做错了什么?有没有办法让它成为可能? 提前致谢!

【问题讨论】:

    标签: php arrays function if-statement


    【解决方案1】:

    你可以试试这个代码

    $array = array_filter([
        $condition ? ['value' => 'aText', 'text' => 'aValue'] : null,
        ['value' => 'bValue', 'text' => 'bText']
    ]);
    
    var_dump($array);
    

    【讨论】:

    【解决方案2】:

    我相信您可以实现的最接近的结果是使用 三元 if 条件,然后使用 array_filter 函数过滤空项:

    $array = array_filter(array(
        array('array1'),
        $condition ? array('array2') : null,
        array('array3)
    ));
    

    【讨论】:

    • 也许你可以在这里解释一下你对array_filter的使用。
    • @Progrock Ofc。如果$condition == false,仍然会创建一个数组项,即使您将其设置为null。为了修剪空项,请使用array_filter 函数。
    【解决方案3】:

    如果您确实必须在数组中使用 if 语句,请使用简写 ifs:

    $arr = array(
    
        "xyz" == $condition  ?  array('value' => $a, 'text' => $a) : null, //null or whatever
        array('value' => $b, 'text' => $b),
                             ...
    
    );
    

    【讨论】:

      【解决方案4】:

      你可以初始化你的数组,然后添加到任何你喜欢的地方:

      $array = [];
      
      if ($condition) {
          $array[] = ["value" => $a, "text" => $a];
      }
      
      $array[] = ["value" => $b, "test" => $b];
      

      【讨论】:

      • 这将非常困难,因为该数组位于其他两个具有“=>”结构的多个数组中。还有其他解决方案吗?
      • @hillcode 您在帖子中的示例并不表示位于“多个数组”中。这完全满足您给出的示例。
      猜你喜欢
      • 2015-05-27
      • 2019-04-19
      • 2015-01-02
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多