如何在foreach循环内的php中合并两个数组?

时间:2018-07-10 09:16:58

标签: php arrays array-merge

我有一些来自数据库的产品选项,我想通过相同的product_id合并所有值。

我正在使用foreachloop。

stdClass Object(
    [id] => 22
    [product_id] => 48
    [values] => Array (
        [0] => stdClass Object (
            [id] => 81
            [option_id] => 22
            [name] => Black
            [value] => black 
        )
    )
),
stdClass Object(
    [id] => 10
    [product_id] => 50
    [values] => Array (
        [0] => stdClass Object (
            [id] => 33
            [option_id] => 10
            [name] => L
            [value] => l 
        ),
        [1] => stdClass Object (
            [id] => 34
            [option_id] => 10
            [name] => M
            [value] => m 
        )
    )   
),
stdClass Object(
    [id] => 24
    [product_id] => 48
    [values] => Array (
        [0] => stdClass Object (
            [id] => 98
            [option_id] => 11
            [name] => X
            [value] => x 
        ),
        [1] => stdClass Object (
            [id] => 99
            [option_id] => 11
            [name] => XL
            [value] => xl 
        ),
        [2] => stdClass Object (
            [id] => 100
            [option_id] => 11
            [name] => XLL
            [value] => xll 
        )
    )
)

我想通过相同的product_id组合这些数组,并得到如下输出:

stdClass Object(
    [id] => 22
    [product_id] => 48
    [values] => Array (
        [0] => stdClass Object (
            [id] => 81
            [option_id] => 22
            [name] => Black
            [value] => black 
        ),
        [1] => stdClass Object (
            [id] => 98
            [option_id] => 11
            [name] => X
            [value] => x 
        )
        [2] => stdClass Object (
            [id] => 99
            [option_id] => 11
            [name] => XL
            [value] => xl 
        ),
        [3] => stdClass Object (
            [id] => 100
            [option_id] => 11
            [name] => XLL
            [value] => xll 
        )
),
stdClass Object(
    [id] => 10
    [product_id] => 50
    [values] => Array (
        [0] => stdClass Object (
            [id] => 33
            [option_id] => 10
            [name] => L
            [value] => l 
        ),
        [1] => stdClass Object (
            [id] => 34
            [option_id] => 10
            [name] => M
            [value] => m 
        )
    )   
)

我正在使用foreach循环,如何在foreach循环中执行此操作? 我想合并相同product_id的值。做这个的最好方式是什么 ?

我的代码是:

foreach($data['products'] as $pro){
    foreach($pro->options as $opt){
        debug($opt);
    }
}

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

1 /您的数据

$array = /* array with all your product obj */;

// Create your new result array
$result = array();

2 / foreach循环

// Loop throught all your object
foreach ($array as $obj) {

    // Your current product id
    $current_product_id = $obj->product_id;

    // The values of this product
    $current_product_values = $obj->values;

    // Loop through all the value of the product
    foreach ($current_product_values as $value) {

        // Add those value to your result array for the current product id
        $result[$current_product_id][] = $value;
    }
}

是您要找的东西吗?

相关问题