【问题标题】:How to merge two arrays same sized object's in PHP如何在PHP中合并两个相同大小的对象
【发布时间】:2019-07-19 18:09:37
【问题描述】:

我有以下两个对象数组:

第一个数组: $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
        )

)

【问题讨论】:

标签: php arrays codeigniter multidimensional-array


【解决方案1】:

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

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

【讨论】:

  • 它有效,但是,我在第二个对象中获得第一个 mysummary 值,在第三个对象中获得第二个值??
  • @RïshïKêshKümar 正在使用相同的 $index。
【解决方案2】:
foreach ($array1 as $key => $value) {
    $array1[$key]->mysummary = $array2[$key]->mysummary;
}
echo '<pre>';print_r($array1);

【讨论】:

    【解决方案3】:

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

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

    Demo.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 2012-01-22
      • 2018-05-18
      • 1970-01-01
      • 2017-09-28
      • 2017-09-30
      相关资源
      最近更新 更多