【问题标题】:Array into Comma separated array in PHP.在 PHP 中将数组转换为逗号分隔的数组。
【发布时间】:2019-04-28 01:30:09
【问题描述】:

所以,我正在构建一个包含元查询的 wordpress 查询。

我从一些不同的早期函数中获得了一些元值,这似乎工作正常。

结束于:$arrayOfVendors = array(92,85,72)

然后我尝试使用 foreach 循环创建动态元查询。

这是通过循环遍历我的数组并通过值创建新数组来完成的。

$test2QueryStringArray = array();
    foreach ($arrayOfVendors as $singleVendorObject) {

        $test2QueryString = array(
        'key' => 'products_vendor',
        'compare'   => 'LIKE',
        'value'=> '"'.$singleVendorObject.'"',
        );

        array_push($test2QueryStringArray, $test2QueryString);
    }

现在我的新数组应该由几个包含我想要的数组组成。

只要把它放到我的参数中,我就应该拥有我想要的一切

'meta_query'             => array(
        'relation' => 'OR',

            $test2QueryStringArray
        )

但是 - 我最终得到的是以下内容。

'meta_query' =>   array (    
    'relation' => 'OR',    
     0 => array (
         0 => array (
            'key' => 'products_vendor',
            'compare' => 'LIKE',
            'value' => '92',
        ),
        1 => array (
            'key' => 'products_vendor',
            'compare' => 'LIKE',
            'value' => '85',
        ),
        2 => array (
            'key' => 'products_vendor',
            'compare' => 'LIKE',
            'value' => '72',
        ),
    ),
)

虽然正确的语法如下。

'meta_query' => array(
    'relation' => 'OR',
     array(
        'key'     => 'products_vendor',
        'compare' => 'LIKE',
        'value'   => '92',
    ),
    array(
        'key'     => 'products_vendor',
        'compare' => 'LIKE',
        'value'   => '85',
    ),
    array(
        'key'     => 'products_vendor',
        'compare' => 'LIKE',
        'value'   => '72',
    ),
),

基本上,我要做的是在 ACF 关系字段(可以选择多个供应商)中获取所有从数组中选择供应商的帖子。

不知道如何从这里开始,我尝试过的一切,要么因为数组到字符串的转换而死掉,要么就是没有给我预期的输出。

所以任何帮助将不胜感激

【问题讨论】:

    标签: php arrays wordpress multidimensional-array


    【解决方案1】:

    用这一行:

    'meta_query' => array('relation' => 'OR',
                          $test2QueryStringArray
                          )
    

    您正在将$test2QueryStringArray 推入meta_query 数组。因此,您可以获得额外的嵌套级别。您要做的是合并:

    'meta_query' => array_merge(array('relation' => 'OR'),
                                $test2QueryStringArray
                               )
    

    【讨论】:

    • 我不需要删除其他索引并用逗号分隔它们吗? - 我会摆弄你的答案!到目前为止,你已经帮助我摆脱了水平 - 谢谢。 '
    • 您想要的格式也有索引,它们只是隐含的(0、1、2、3)。这与您应该从我的代码中获得的索引集相同。
    • 非常感谢! - 似乎它正在按预期工作
    • 不用担心。很高兴我能帮上忙。
    猜你喜欢
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多