JSON из PHP ассоциированного массива

У меня есть ассоциативный массив, как показано ниже

$arraySapmle =  array ("benz" => "car","bmw" => "car","volvo" = "car",
"delhi" => "place", "newyork" => "place", "tokyo" =>"place" );

и мне нужен JSON, как это

$json = [
"car": {
"name" : "benz",
"name" : "bmw",
"name" : "volvo"},
"place" : {
"name" : "delhi",
"name" : "newyork",
"name" : "tokyo"}
]

Есть идеи?

-3

Решение

Самое близкое, что вы получите к этой структуре, имеет каждое свойство верхнего уровня (car, place) содержат массив объектов с name свойства:

$restructured=[];
foreach($arraySample as $key=>$val)
$restructured[$val][]=['name'=>$key];
echo json_encode($restructured, JSON_PRETTY_PRINT);

Выход:

{
"car": [
{
"name": "benz"},
{
"name": "bmw"},
{
"name": "volvo"}
],
"place": [
{
"name": "delhi"},
{
"name": "newyork"},
{
"name": "tokyo"}
]
}
2

Другие решения

Это сгенерирует массив, в котором есть ключ для «car» и «place», значение которого представляет собой массив автомобилей и мест:

$array = array();
foreach($arraySample as $key => $value){
if(!isset($array[$value])) $array[$value] = array();
$array[$value][] = $key;
}
$json = json_encode($array);

Это не совсем та структура данных, о которой вы просили, но она имеет смысл.

0

По вопросам рекламы [email protected]