Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在元查询wordpress中形成动态键值数组_Php_Wordpress - Fatal编程技术网

Php 如何在元查询wordpress中形成动态键值数组

Php 如何在元查询wordpress中形成动态键值数组,php,wordpress,Php,Wordpress,这是我的元查询 $args = array( 'post_type' => 'auto', 'meta_query' => array( array( 'key' => 'a', 'value' => 'test', ), array( 'key' => 'b', 'val

这是我的元查询

$args = array(
    'post_type'  => 'auto',
    'meta_query' => array(          
        array(
            'key'     => 'a',
            'value'   => 'test', 
        ),
        array(
            'key' => 'b',
            'value'   => 'test', 
        ),
        array(
            'key' => 'c',
            'value'   => '', 
        ),
        array(
            'key' => 'd',
            'value'   => '', 
        ),
        array(
            'key' => 'e',
            'value'   => '', 
        ),
        array(
            'key' => 'f',
            'value'   => '', 
        ),
        array(
            'key' => 'g',
            'value'   => '', 
        ),

    ),
);
我需要动态地形成数组,就像如果某个键的数组值为null,那么它就不应该附加到元查询中


上述数组中的示例键“c”值为null,因此它不应出现在元查询中,如wise i有更多的键值对列表,欢迎提供任何帮助,提前感谢。

您可以使用带有回调函数的数组过滤器来清除每个为null的数组项,然后将结果数组传递到
$args
数组,然后传递到
WP\u QUERY

下面的示例将清理数组,如果它的值为null,请注意我使用了多个参数的
'relation'=>'和'
。如果要使用
语句,可以详细检查

function clean_array(&$rows)
{
    if (!empty($rows['value'])) {
        return $rows;
    }
}

$array = array(
    array('key' => 'a', 'value' => 'test'),
    array('key' => 'b', 'value' => 'test'),
    array('key' => 'c', 'value' => ''),
    array('key' => 'd', 'value' => ''),
    array('key' => 'e', 'value' => ''),
    array('key' => 'f', 'value' => ''),
    array('key' => 'g', 'value' => ''),
);

$meta_query = array_filter($array, 'clean_array');

echo '<pre>';print_r($meta_query);echo '</pre>';

$args = array(
    'post_type' => 'auto',
    'meta_query' => array(
        'relation' => 'AND',
        $meta_query
    )
);

$post = new WP_Query($args);

// below line will print query run against your parameters.
echo '<pre>';print_r($post->request);echo '</pre>';
function clean_数组(&$rows)
{
如果(!empty($rows['value'])){
返回$rows;
}
}
$array=array(
数组('key'=>'a','value'=>'test'),
数组('key'=>'b','value'=>'test'),
数组('key'=>'c','value'=>''),
数组('key'=>'d','value'=>''),
数组('key'=>'e','value'=>''),
数组('key'=>'f','value'=>''),
数组('key'=>'g','value'=>''),
);
$meta_query=array_filter($array,'clean_array');
回声';打印(元查询);回声';
$args=数组(
“post_类型”=>“自动”,
“元查询”=>数组(
'关系'=>'和',
$meta_查询
)
);
$post=新的WP\U查询($args);
//下一行将打印针对您的参数运行的查询。
回声';打印($post->request);回声';
如果PHP5.3或更高版本,则使用匿名函数

function filter_meta_query($value)
{
    return !empty($value['value']);
}

$args['meta_query'] = array_filter($args['meta_query'],'filter_meta_query');
$args['meta_query'] = array_filter($args['meta_query'],function($value){
   return !empty($value['value']);
});