将数组关联值动态设置为1-6

时间:2016-02-10 10:35:00

标签: php

我有以下数组`$ args:

$args = array(
    'posts_per_page' => 100,
    'post_type' => array('product', 'product_variation'),
    'product_cat' => 'Caravans', 
    'tax_query' => array(                   
                        array(
                            'taxonomy' => 'pa_berth',                
                            'field' => 'name',                    
                            'terms' => array( $berth ),    
                            'include_children' => true,           
                            'operator' => 'IN'                    
                        )
                    ),
                 ); 

我正在设置POST的$berth值。但是,$ berth并不总是从post设置,但'terms'键总是需要一个值(在这种情况下,它需要是1,2,3,4,5,6)。我试图用以下条件来解决这个问题。

if(isset($_POST['berth'])) {
    $berth = (int)$_POST['berth'];
}
else {
    $berth = 1,2,3,4,5,6;
} 

所以如果没有在帖子上设置'berth',我试图传递那些整数。但是这不是有效的PHP。这里最好的解决方案是什么?

2 个答案:

答案 0 :(得分:2)

您希望$berth成为数组。

如果未从$_POST设置,则需要设置默认值。

以下代码解决了这两个问题:

if (isset($_POST['berth'])) {
 $berth = (int)$_POST['berth'];
 $berth = array($berth);
}
else {
 $berth = array(1,2,3,4,5,6);
}

此外,将最新部分更改为(直接将$berth作为数组传递,而不是创建一个以$berth作为第一个元素的新数组。

...
array(
 'taxonomy' => 'pa_berth',                
  'field' => 'name',                    
  'terms' => $berth,    
  'include_children' => true,           
  'operator' => 'IN'                    
 )
...

答案 1 :(得分:1)

无需复杂化,您可以执行以下操作:

if(isset($_POST['berth'])) {
    $berth = array( (int) $_POST['berth'] );
}
else {
    $berth = array( 1,2,3,4,5,6 );
} 

这样你总是确保$ berth变量是一个数组然后你可以将数组本身传递给terms字段,如下所示:

$args = array(
    'posts_per_page' => 100,
    'post_type' => array('product', 'product_variation'),
    'product_cat' => 'Caravans', 
    'tax_query' => array(                   
                        array(
                            'taxonomy' => 'pa_berth',                
                            'field' => 'name',                    
                            'terms' => $berth,    
                            'include_children' => true,           
                            'operator' => 'IN'                    
                        )
                    ),
                 );