在多维数组php

时间:2019-01-21 11:15:42

标签: php arrays multidimensional-array

我想将基于author_id的重复数组值合并为一个。我的代码如下:

 public function full_array( $date_query, $minimum ) {          
    $data = $this->date_array_freqency( $date_query, $minimum );
    $products = array();

    foreach( $data as $id => $sales ) {
        $products[] = array (
            'author_id'     => get_post_field( 'post_author', $id ),
            'product_id'    => $id,
            'sales'         => $sales                   
          );
    }           
}

多维数组看起来像这样:

Array
(
    ....

    [4] => Array
        (
            [author_id] => 27
            [product_id] => 166
            [sales] => 6
        )

    [5] => Array
        (
            [author_id] => 25
            [product_id] => 1056
            [sales] => 6
        )

    [6] => Array
        (
            [author_id] => 27
            [product_id] => 331
            [sales] => 6
        )

)

当有相同的作者ID时,我想将数组组合成这样:

[4] => Array
        (
            [author_id] => 27
            [product_id] => array( 166, 331)
            [sales] => array(6, 6)
        )

非常感谢任何指导。

1 个答案:

答案 0 :(得分:3)

您可以在for-loop函数中更改full_array来执行以下操作:

foreach( $data as $id => $sales ) {
    $aId = get_post_field( 'post_author', $id );
    if (isset($products[$aId])) { // if the author already in the result just add the data
        $products[$aId]["product_id"][] = $id;
        $products[$aId]["sales"][] = $sales;

    } else { // if not exist add new data 
        $products[$aId] = array('author_id' => $aId, 'product_id' => [$id], 'sales' => [$sales]);
    }
}

如果您不希望结果数组中的键(作者ID),请使用array-values