Как объединить массив после сравнения с другими многомерными массивами

У меня есть массив, который повторяется после последовательности по «id», и я сравниваю массив с другим многомерным массивом с «id». Если «id» существует в обоих массивах, он возвращает значение, иначе он возвращает 0.

<?php 
$arr1 = [
  ['id' => 6],
  ['id' => 7],
  ['id' => 8],
  ['id' => 9]
];

$arr2 = [
  ['id' => 6, 'total' => 84.75, 'group' => 1000],
  ['id' => 8, 'total' => 75.0, 'group' => 1000]
];

$s_data = [];

for($x = 0; $x < count($arr2); $x++){
    $id = $arr2[$x]['id'];
    $group = $arr2[$x]['group'];
    $total = $arr2[$x]['total'];


    for($ab = 0; $ab < count($arr1); $ab++){

        if ($arr1[$ab]['id'] === $id)
       {
         $s_data[] = ['group' => $group, 'id' => $id, 
         'total'=> $total];
       }
       else
       {
         $s_data[] = ['group' => $group, 'id' => 
         $arr1[$ab]['id'], 'total'=> 0];                                
       }                             
      }

}
echo json_encode($s_data);
?>

мне нужен массив типа

array:4 [▼
  0 => array:3 [▼
    "group" => "1000"
    "id" => 6
    "total" => 84.75
  ]
  1 => array:3 [▼
    "group" => "1000"
    "id" => 7
    "total" => 0
  ]
  2 => array:3 [▼
    "group" => "1000"
    "id" => 8
    "total" => 75.0
  ]
  3 => array:3 [▼
    "group" => "1000"
    "id" => 9
    "total" => 0
  ]
]

К вашему сведению, я сравниваю 2 массива с идентификатором. Если «id» существует в обоих массивах, он возвращает значение, иначе он возвращает 0.

Что это за язык программирования? Какой код у вас сейчас? Пожалуйста, редактировать, чтобы включить минимальный воспроизводимый пример - не используйте вывод функции отладки, напишите фактический жестко закодированный ввод, который кто-то может использовать непосредственно в своем ответе.

IMSoP 18.03.2022 18:56

Вот и я. Не могли бы вы проверить? @IMSoP

raaahad 18.03.2022 19:36
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
$arr1 = [
    [ 'id' => 6 ],
    [ 'id' => 7 ],
    [ 'id' => 8 ],
    [ 'id' => 9 ]
];

$arr2 = [
    [ 'id' => 6, 'total' => 84.75, 'group' => 1000 ],
    [ 'id' => 8, 'total' => 75.0, 'group' => 1000 ]
];

$result = [];

foreach ($arr1 as $value) {
  $filtered = array_filter($arr2, fn($item) => $item['id'] === $value['id']);
  if (count($filtered) === 1) {
    $result[] = array_values($filtered)[0];
  } else {
    $result[] = [ 'id' => $value['id'], 'total' => 0, 'group' => 1000 ];
  }
}

print_r($result);

Выход:

Array
(
    [0] => Array
        (
            [id] => 6
            [total] => 84.75
            [group] => 1000
        )

    [1] => Array
        (
            [id] => 7
            [total] => 0
            [group] => 1000
        )

    [2] => Array
        (
            [id] => 8
            [total] => 75
            [group] => 1000
        )

    [3] => Array
        (
            [id] => 9
            [total] => 0
            [group] => 1000
        )

)

Другие вопросы по теме