I have below the data
JavaScript
x
[
{
"price_in_dollar": 1000,
"price_in_euro": 1000,
"price_in_pound": 1000,
"price_in_rupee": 1000,
"toy_id": 1,
"toy_name": "Truck"
},
{
"price_in_dollar": 1000,
"price_in_euro": 1000,
"price_in_pound": 1000,
"price_in_rupee": 1000,
"toy_id": 2,
"toy_name": "Bicycle"
}
]
I want to create a new array from above as below
JavaScript
[
{
"toy": "Truck",
"toy_id": 1,
"rate": 1000,
"slug": "price_in_dollar",
},
{
"toy": "Truck",
"toy_id": 1,
"rate": 1000,
"slug": "price_in_euro",
},
{
"toy": "Bicycle",
"toy_id": 2,
"rate": 1000,
"slug": "price_in_dollar",
},
{
"toy": "Bicycle",
"toy_id": 2,
"rate": 1000,
"slug": "price_in_euro",
},
]
I have tried the below code
JavaScript
foreach($data as $r) {
foreach($r as $key => $value) {
if ($key === 'toy_name') {
$cars['toy'] = $value ;
}
else if ($key === 'toy_id') {
$cars['toy_id'] = $value;
}
else {
$cars['slug'] = $key ;
$cars['rate'] = $value;
}
}
}
But it only has one set of data, how can I append all data? Or any improved code to solve this?
Advertisement
Answer
your code was actually replacing a key => value
pair data, not pushing a data into $cars
, you can fix it like this:
JavaScript
$cars = [];
foreach($data as $r) {
$singleCar = [
"toy_id" => $r['toy_id'],
"toy" => $r['toy_name'],
];
foreach($r as $key => $val){
if($key != 'toy_id' && $key != 'toy_name') {
$singleCar['rate'] = $val;
$singleCar['slug'] = $key;
$cars[] = $singleCar;
}
}
}