У меня есть массив, который повторяется после последовательности по «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
$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
)
)
Что это за язык программирования? Какой код у вас сейчас? Пожалуйста, редактировать, чтобы включить минимальный воспроизводимый пример - не используйте вывод функции отладки, напишите фактический жестко закодированный ввод, который кто-то может использовать непосредственно в своем ответе.