Объединить связанные данные строк из массива со строками другого массива.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Объединить связанные данные строк из массива со строками другого массива.

Сообщение Anonymous »

У меня есть два двухмерных массива, в которых данные связанных строк из одного массива необходимо объединить с другим.
Первый из них содержит информацию о состоянии запасов на тот день — это хранится в другой базе данных.
Второй массив содержит информацию о продуктах, такую ​​как название, описание и т. д.
Я хочу объединить или объединить данные второго массива в первый массив на основе определенного общего столбца значений (product_id).
Пока я использую два циклы foreach для объединения этих двух.
Как я могу улучшить свой код?
Пример данных (общий ключ — product_id):
$array_one = [
[
'product_id' => 1,
'product_stock' => '1.2',
'stock_date' => '2022-02-15'
],
[
'product_id' => 2,
'product_stock' => '5',
'stock_date' => '2022-02-15'
],
];
$array_two = [
[
'product_id' => 1,
'product_slug' => 'product_one',
'product_description' => 'this is the product one'
],
[
'product_id' => 2,
'product_slug' => 'product_two',
'product_description' => 'this is the product two'
],
[
'product_id' => 3,
'product_slug' => 'product_three',
'product_description' => 'this is the product three'
],
];

Мой код:
$new_array = [];

foreach ($array_one as $key => $value) {
$new_array[ $value['product_id'] ] = $value ;
}
foreach ($array_two as $key => $value) {
if ( isset( $new_array[ $value['product_id'] ] ) ) {
$new_array[ $value['product_id'] ]['product_slug'] = $value['product_slug'];
$new_array[ $value['product_id'] ]['product_description'] = $value['product_description'];
}
}

Результат, как и ожидалось:
array(2) {
[1]=>
array(5) {
["product_id"]=>
int(1)
["product_stock"]=>
string(3) "1.2"
["stock_date"]=>
string(10) "2022-02-15"
["product_slug"]=>
string(11) "product_one"
["product_description"]=>
string(23) "this is the product one"
}
[2]=>
array(5) {
["product_id"]=>
int(2)
["product_stock"]=>
string(1) "5"
["stock_date"]=>
string(10) "2022-02-15"
["product_slug"]=>
string(11) "product_two"
["product_description"]=>
string(23) "this is the product two"
}
}


Подробнее здесь: https://stackoverflow.com/questions/719 ... rrays-rows
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»