Как объединить два массива объектов одинакового размера в PHP - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть два следующих массива объектов:

Первый массив: $ 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
        )

)

Ответы [ 3 ]

0 голосов
/ 26 февраля 2019

Вы можете использовать комбинацию array_map и array_merge , чтобы добиться того же, не зависимо от статического ключа массивов.

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

Demo .

0 голосов
/ 26 февраля 2019
foreach ($array1 as $key => $value) {
    $array1[$key]->mysummary = $array2[$key]->mysummary;
}
echo '<pre>';print_r($array1);
0 голосов
/ 26 февраля 2019

Вы можете циклически использовать индекс и добавить атрибут второго массива в первый:

for ($index = 0; $index < count($array1); $index++) {
    $array1[$index]->mysummary = $array2[$index]->mysummary;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...