Есть такой items.json:
[
{
"name": "Fluted Guard of the Moon Rider",
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxMfcRlFwIBYYpbaaOA9vxv_MdC8M7tq0xoaOzvb2Z7iJxD8GsJIi0--Up9Sh0A2yr0pvZ22iJdXGdVQ5NUaQpAZGHIGG2g"
},
{
"name": "Lion Quiver of the Moon Rider",
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxtraRVhmahdbiauwIhFlwb2aImoS7oWwzIPYwqetYeKExm9SsMAg3b7AoNz32QDkqUNtMD2lJdPGbEZgNjYx8IO6"
},
{
"name": "Bow of the Moon Rider",
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiS1cDEHE54GgZYofT2e1cwgKWRc2pB74SyzNbYwfamZL6BwjgF65wn3eyRp96sjVbg_xFofSmtc2nZXSY6"
}
]
И вот такой price.json:
{
"data": [
{
"updated_at": 1576048969000,
"prices": {
"last": 5300
},
"name": "Lion Quiver of the Moon Rider"
},
{
"updated_at": 1576048969000,
"prices": {
"last": 2000.12
},
"name": "Dragon Sheild"
}
]
}
Как мне сопоставить цены из price.json по названию предмета? Чтоб получилось вот так:
{
"name": "Lion Quiver of the Moon Rider",
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxtraRVhmahdbiauwIhFlwb2aImoS7oWwzIPYwqetYeKExm9SsMAg3b7AoNz32QDkqUNtMD2lJdPGbEZgNjYx8IO6",
"price":5300
}
Пробовал делать вот так, но в результате дубликаты предметов и на которых нет цены удаляются:
<?php
$jsonProducts = '[
{
"name": "Fluted Guard of the Moon Rider",
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxMfcRlFwIBYYpbaaOA9vxv_MdC8M7tq0xoaOzvb2Z7iJxD8GsJIi0--Up9Sh0A2yr0pvZ22iJdXGdVQ5NUaQpAZGHIGG2g"
},
{
"name": "Lion Quiver of the Moon Rider",
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxtraRVhmahdbiauwIhFlwb2aImoS7oWwzIPYwqetYeKExm9SsMAg3b7AoNz32QDkqUNtMD2lJdPGbEZgNjYx8IO6"
},
{
"name": "Lion Quiver of the Moon Rider",
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxtraRVhmahdbiauwIhFlwb2aImoS7oWwzIPYwqetYeKExm9SsMAg3b7AoNz32QDkqUNtMD2lJdPGbEZgNjYx8IO6"
}
]';
$jsonData = '{
"data": [
{
"updated_at": 1576048969000,
"prices": {
"last": 5300
},
"name": "Lion Quiver of the Moon Rider"
},
{
"updated_at": 1576048969000,
"prices": {
"last": 2000.12
},
"name": "T-shirts"
}
]
}';
$data = json_decode($jsonData, true)['data'];
$products = array_column(json_decode($jsonProducts, true), null, 'name');
$result = array_map(function($item) use ($products) {
$product = new \stdClass();
$product->market_name = $products[$item['name']]['name'];
$product->size = $products[$item['name']]['size'];
$product->price = $item['prices']['last'] ?? null;
return $product;
}, $data);
$resultJson = json_encode($result);
var_dump($resultJson);
Если я правильно понял, то можно сделать следующим образом:
$price = json_decode($jsonData, 1)['data'];
$json = json_decode($jsonProducts, 1);
foreach($price as $key => $value)
{
foreach($json as $k => $value2) {
if ($value['name'] === $value2['name']) {
$json[$k]['price'] = $value['prices']['last'];
}
}
}
print_r($json);
https://3v4l.org/mWaIS
Если же вы хотите сделать price
только для первого найденого вхождения (если рассматривать дубликаты), то можете сделать так:
$bool = false;
foreach($price as $key => $value)
{
foreach($json as $k => $value2) {
if ($value['name'] === $value2['name']) {
if ($bool !== true) {
$json[$k]['price'] = $value['prices']['last'];
$bool = true;
}
}
}
}
https://3v4l.org/X7FoM
<?php
$main='{"data1":[
{
"name": "Fluted Guard of the Moon Rider",
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxMfcRlFwIBYYpbaaOA9vxv_MdC8M7tq0xoaOzvb2Z7iJxD8GsJIi0--Up9Sh0A2yr0pvZ22iJdXGdVQ5NUaQpAZGHIGG2g"
},
{
"name": "Lion Quiver of the Moon Rider",
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiSxtraRVhmahdbiauwIhFlwb2aImoS7oWwzIPYwqetYeKExm9SsMAg3b7AoNz32QDkqUNtMD2lJdPGbEZgNjYx8IO6"
},
{
"name": "Bow of the Moon Rider",
"icon": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KW1Zwwo4NUX4oFJZEHLbXK9QlSPcU_oAlcQk2fVOiS1cDEHE54GgZYofT2e1cwgKWRc2pB74SyzNbYwfamZL6BwjgF65wn3eyRp96sjVbg_xFofSmtc2nZXSY6"
}
]
}';
$go='{
"data": [
{
"updated_at": 1576048969000,
"prices": {
"last": 5300
},
"name": "Lion Quiver of the Moon Rider"
},
{
"updated_at": 1576048969000,
"prices": {
"last": 2000.12
},
"name": "Dragon Sheild"
}
]
}';
$result=json_decode($main,true);
//print_r($result);
$result1=json_decode($go,true);
foreach ($result as $key => $value) {
foreach ($value as $key1 => $value1) {
foreach ($result1 as $key0 => $value0) {
foreach ($value0 as $key10 => $value10) {
if($value1['name']==$value10['name']){
$arr['price']=$value10['prices']['last'];
$arr['icon']=$value1['icon'];
$arr['name']=$value1['name'];
}
}
}
}
}
print_r($arr);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть input куда пользователь может ввести число больше нуляПо нажатию кнопки должна запускаться функция, которая выводит числа от введенного...
HELLO Имеется несколько вариантов ответа , по нажатию на кнопку нужно проверить , если value== a , ответ правильный , если b , неверный