对于每个值,用逗号分隔

问题描述 投票:0回答:1

这是我从每个订单获取电子邮件地址的代码:

function callback() {

    $args = array('return'  => 'ids' );
    
    $query = new WC_Order_Query( $args );

    $orders = $query->get_orders();

    $emails_array = [];
    
    foreach( $orders as $order_id ) {
    
    $order          = wc_get_order( $order_id );
    $order_ids      = $order->get_id();
    $billing_email  = $order->get_billing_email();

    $emails_array[] = $billing_email;
    
    echo implode( ',', $emails_array );
     
    //echo json_encode( $billing_email ); 

   // implode(',', $billing_email );
     

  }
}

输出这个:

[email protected]@example.com

我需要在每个电子邮件地址之间添加逗号并生成如下列表:

[email protected],[email protected]

我尝试过 json_encode、implode、explode 和存储像这样的数组 $billing_email[] = some 但不知道该怎么做。

更新:我已更新代码,但在电子邮件列表中出现重复项。

当我使用 json_encode 时,我得到这个;

[email protected]”“[email protected]

php arrays woocommerce orders implode
1个回答
0
投票

使用

array_unique()
避免重复的电子邮件。我也简化了你的代码:

function callback() {
    $emails = array(); // Initialize
    $args   = [ 'limit' => -1, 'type' => 'shop_order' ];

    foreach( wc_get_orders($args) as $order ) {
        $emails[] = $order->get_billing_email();
    }

    echo implode( ',', array_unique( $emails ) );
}

已测试且有效。

© www.soinside.com 2019 - 2024. All rights reserved.