codeigniter 如何在PHP中合并两个相同大小对象的数组[duplicate]

qqrboqgw  于 2022-12-06  发布在  PHP
关注(0)|答案(3)|浏览(105)

此问题在此处已有答案

Merge rows of two arrays containing objects by first level index(3个答案)
两个月前关门了。
此帖子在2个月前已编辑并提交审核,未能重新打开:
原始关闭原因未解决
我有以下两个对象数组:

第一个数组:$array1

Array
(
    [0] => stdClass Object
        (
            [pid] => 1
            [pname] => iphone-6s
            [product_category] => 1
            [product_price] => 250
            [product_description] => Its iphone-6s, Apple Brand Products
            [product_image] => iPhone6s.png
            [uid] => 1
            [product_status] => Active
        )

    [1] => stdClass Object
        (
            [pid] => 2
            [pname] => Beauty Care
            [product_category] => 1
            [product_price] => 200
            [product_description] => Beauty Care's Products
            [product_image] => 2ca65f58e35d9ad45bf7f3ae5cfd08f1_beauty-care.png
            [uid] => 1
            [product_status] => Active
        )

    [2] => stdClass Object
        (
            [pid] => 3
            [pname] => iphone-4
            [product_category] => 1
            [product_price] => 230
            [product_description] => its iphone-4, Apple Brand Products
            [product_image] => 5878a7ab84fb43402106c575658472fa_iphone_4.png
            [uid] => 1
            [product_status] => Active
        )

    [3] => stdClass Object
        (
            [pid] => 4
            [pname] => Android tv
            [product_category] => 1,2
            [product_price] => 180
            [product_description] => Smart TV
            [product_image] => Android-TV.png
            [uid] => 2
            [product_status] => Active
        )

    [4] => stdClass Object
        (
            [pid] => 5
            [pname] => AC
            [product_category] => 1
            [product_price] => 185
            [product_description] => AC
            [product_image] => air_conditioner.png
            [uid] => 2
            [product_status] => Active
        )

    [5] => stdClass Object
        (
            [pid] => 6
            [pname] => Harry Potter
            [product_category] => 4
            [product_price] => 25
            [product_description] => Harry Potter and the Cursed Child
            [product_image] => harry_potter.jpg
            [uid] => 1
            [product_status] => Active
        )

    [6] => stdClass Object
        (
            [pid] => 7
            [pname] => Football
            [product_category] => 4
            [product_price] => 25
            [product_description] => Nivia Football
            [product_image] => football.jpeg
            [uid] => 1
            [product_status] => Active
        )

    [7] => stdClass Object
        (
            [pid] => 8
            [pname] => Ps4
            [product_category] => 1,3,4,5
            [product_price] => 1600
            [product_description] => Ps4
            [product_image] => Ps-4.png
            [uid] => 2
            [product_status] => Active
        )

)

第二个数组:$array2

Array
(
    [0] => stdClass Object
        (
            [mysummary] => Electronics
        )

    [1] => stdClass Object
        (
            [mysummary] => Electronics,Fashion
        )

    [2] => stdClass Object
        (
            [mysummary] => Electronics
        )

    [3] => stdClass Object
        (
            [mysummary] => Sports, Books and Gaming etc.
        )

    [4] => stdClass Object
        (
            [mysummary] => Sports, Books and Gaming etc.
        )

    [5] => stdClass Object
        (
            [mysummary] => Electronics
        )

    [6] => stdClass Object
        (
            [mysummary] => Electronics
        )

    [7] => stdClass Object
        (
            [mysummary] => Electronics,Home & Furniture,Sports, Books and Gaming etc.,Beauty & Personal Care
        )

)

我想合并这两个对象数组

所需输出:

Array
(
    [0] => stdClass Object
        (
            [pid] => 1
            [pname] => iphone-6s
            [product_category] => 1
            [product_price] => 250
            [product_description] => Its iphone-6s, Apple Brand Products
            [product_image] => iPhone6s.png
            [uid] => 1
            [product_status] => Active
            [mysummary] => Electronics
        )

    [1] => stdClass Object
        (
            [pid] => 2
            [pname] => Beauty Care
            [product_category] => 1,2
            [product_price] => 200
            [product_description] => Beauty Care's Products
            [product_image] => 2ca65f58e35d9ad45bf7f3ae5cfd08f1_beauty-care.png
            [uid] => 1
            [product_status] => Active
            [mysummary] => Electronics,Fashion
        )

    [2] => stdClass Object
        (
            [pid] => 3
            [pname] => iphone-4
            [product_category] => 1
            [product_price] => 230
            [product_description] => its iphone-4, Apple Brand Products
            [product_image] => 5878a7ab84fb43402106c575658472fa_iphone_4.png
            [uid] => 1
            [product_status] => Active
            [mysummary] => Electronics
        )

    [3] => stdClass Object
        (
            [pid] => 4
            [pname] => Android tv
            [product_category] => 3,4
            [product_price] => 180
            [product_description] => Smart TV
            [product_image] => Android-TV.png
            [uid] => 2
            [product_status] => Active
             [mysummary] => Sports, Books and Gaming etc.
        )

    [4] => stdClass Object
        (
            [pid] => 5
            [pname] => AC
            [product_category] => 3,4
            [product_price] => 185
            [product_description] => AC
            [product_image] => air_conditioner.png
            [uid] => 2
            [product_status] => Active
            [mysummary] => Sports, Books and Gaming etc.
        )

    [5] => stdClass Object
        (
            [pid] => 6
            [pname] => Harry Potter
            [product_category] => 1
            [product_price] => 25
            [product_description] => Harry Potter and the Cursed Child
            [product_image] => harry_potter.jpg
            [uid] => 1
            [product_status] => Active
            [mysummary] => Electronics
        )

    [6] => stdClass Object
        (
            [pid] => 7
            [pname] => Football
            [product_category] => 1
            [product_price] => 25
            [product_description] => Nivia Football
            [product_image] => football.jpeg
            [uid] => 1
            [product_status] => Active
            [mysummary] => Electronics
        )

    [7] => stdClass Object
        (
            [pid] => 8
            [pname] => Ps4
            [product_category] => 1,3,4,5
            [product_price] => 1600
            [product_description] => Ps4
            [product_image] => Ps-4.png
            [uid] => 2
            [product_status] => Active
            [mysummary] => Electronics,Home & Furniture,Sports, Books and Gaming etc.,Beauty & Personal Care
        )

)
b5lpy0ml

b5lpy0ml1#

您可以循环使用索引,并将第二个数组的属性加入第一个数组:

for ($index = 0; $index < count($array1); $index++) {
    $array1[$index]->mysummary = $array2[$index]->mysummary;
}
cygmwpex

cygmwpex2#

foreach ($array1 as $key => $value) {
    $array1[$key]->mysummary = $array2[$key]->mysummary;
}
echo '<pre>';print_r($array1);
jljoyd4f

jljoyd4f3#

您可以使用array_maparray_merge的组合来实现相同的目的,而不需要依赖数组的静态键。

$result = array_map(function($a,$b){  
    return array_merge(isset($a) ? $a : array(), isset($b) ? $b : array());
},$a1,$a2);

Demo中的一个。

相关问题