【问题标题】:Add conditionally a key / value pair to an array in Woocommerce有条件地将键/值对添加到 Woocommerce 中的数组
【发布时间】:2023-03-11 20:14:01
【问题描述】:

如果有搜索词,我只想有条件地将 's' => $search_term 添加到数组中。

$args = array(
    // if there is a $search_term then insert: 
   's' => $search_term 
);

我知道我可以编写许多参数,然后在数组外使用 if 语句,但这不是我想要做的。

【问题讨论】:

    标签: php arrays wordpress if-statement woocommerce


    【解决方案1】:

    您需要在数组之外执行此操作,就好像不会在数组中声明键 's'(如果没有 搜索词,则为空值。

    尝试以下方法,我们有条件地在定义的数组中插入新的键/值对:

    // Initialize (or define) the array variable
    $args = array();
    
    // IF + Condition
    if( isset($search_term) && ! empty($search_term) ){
        // Inserting in $args array a new key / value pair
        $args['s'] = $search_term;
    }
    

    或者如前所述,使用始终定义的's' 键,如下所示:

    $args = array(
        's' => isset($search_term) && ! empty($search_term) ? $search_term : '';
    );
    

    【讨论】:

    • 谢谢。我确实采用了这个解决方案 if( isset($search_term) && !empty($search_term) ){ // 在 $args 数组中插入一个新的键/值对 $args[' s'] = $search_term; } 。感谢您的帮助
    • @AmjadKhalil 欢迎您。只是说我已经更新了我的第二个代码 sn-p 因为有一个小错误。谢谢。
    【解决方案2】:

    您的建议无法实现。 PHP array 函数用于声明键和值。所以,当你写的时候:

    $args = array( 
       's' => $search_term 
    );
    

    它将创建密钥's'。您可以执行以下操作

    $args = array( 
           's' => isset($search_term) ? $search_term : null
        );
    

    并使用 isset($args['s']) 进行查询以执行您所描述的操作,但是 IMO 依赖这种行为是不好的。 isset 返回 false 哪些数组值为 null。

    最好的方法是 LoicTheAztec 推荐的,但您可以在这里找到解决方法。

    【讨论】:

      猜你喜欢
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 2019-07-03
      • 2018-03-12
      • 2020-07-06
      相关资源
      最近更新 更多