2017-07-12 16 views
0

私は、日付と電子メールアドレスに基づいてゲストの注文が重複していることを検出するWooCommerceプラグインを作成しています。私は必要なすべてのデータがある配列を作成することができました。重複がある場合、注文IDは正しい電子メールアドレスに追加されます。多次元配列から不要な配列を削除する

今は1桁のIDのみが存在するすべての配列を削除します。

CODE:

$i = 0; 

$big_order = array(); 

foreach($order_ids as $id) { 

    $order = new WC_Order($id); 

    //print_r ($order); 

    if(array_search($order->billing_email, array_column($big_order, 'email')) !== false){ 
     $key = array_search($order->billing_email, array_column($big_order, 'email')); 
     $big_order['row-'.$key]['order_id'][] = $id; 
    } else { 
     $big_order['row-'.$i]['email'] = $order->billing_email; 
     $big_order['row-'.$i]['order_id'][] = $id; 
    } 

    $i++; 

} 

print_r ($big_order); 

OUTPUT:私は行2アレイが必要この場合

Array 
(
[row-0] => Array 
    (
     [email] => [email protected] 
     [order_id] => Array 
      (
       [0] => 14 
      ) 

    ) 

[row-1] => Array 
    (
     [email] => [email protected] 
     [order_id] => Array 
      (
       [0] => 13 
      ) 

    ) 

[row-2] => Array 
    (
     [email] => [email protected] 
     [order_id] => Array 
      (
       [0] => 12 
       [1] => 10 
      ) 

    ) 

) 

。 助けてくれてありがとう。

答えて

0

使用array_filter()count():参考

$big_order = array_filter($big_order, function (array $row) { 
    return 1 < count($row['order_id']); 
}); 

は、以下を参照してください。

+0

おかげで、私は助けアレイとカウントが別の方法を発見しました:)。しかし、あなたのソリューションはよりエレガントです:)。 $ new_array = array(); \t foreachの($項目として$ big_order) \t {\t \t //エコーカウント($アイテム[ 'ORDER_ID'])。 \t \t場合(カウント($アイテム[ 'ORDER_ID'])> 1) \t \t { \t \t \t $ new_array [] = $アイテム。 \t \t \t – beamkiller

+0

@beamkiller問題を解決するには常に異なる可能性があります。 – localheinz