I have an associative array as below
$arraySapmle = array ("benz" => "car","bmw" => "car","volvo" = "car",
"delhi" => "place", "newyork" => "place", "tokyo" =>"place" );
and I need a json like this
$json = [
"car": {
"name" : "benz",
"name" : "bmw",
"name" : "volvo"
},
"place" : {
"name" : "delhi",
"name" : "newyork",
"name" : "tokyo"
}
]
Have any idea?
The closest you will get to that structure is having each top level property (car, place
) contain an array of objects with name
properties:
$restructured=[];
foreach($arraySample as $key=>$val)
$restructured[$val][]=['name'=>$key];
echo json_encode($restructured, JSON_PRETTY_PRINT);
Output:
{
"car": [
{
"name": "benz"
},
{
"name": "bmw"
},
{
"name": "volvo"
}
],
"place": [
{
"name": "delhi"
},
{
"name": "newyork"
},
{
"name": "tokyo"
}
]
}
This will generate an array which has a key for "car" and "place", the value of which is an array of cars and places:
$array = array();
foreach($arraySample as $key => $value){
if(!isset($array[$value])) $array[$value] = array();
$array[$value][] = $key;
}
$json = json_encode($array);
It is not quite the data structure you asked for, but it is one that makes sense.