У меня есть ассоциативный массив, как показано ниже
$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"}
]
Есть идеи?
Самое близкое, что вы получите к этой структуре, имеет каждое свойство верхнего уровня (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"}
]
}
Это сгенерирует массив, в котором есть ключ для «car» и «place», значение которого представляет собой массив автомобилей и мест:
$array = array();
foreach($arraySample as $key => $value){
if(!isset($array[$value])) $array[$value] = array();
$array[$value][] = $key;
}
$json = json_encode($array);
Это не совсем та структура данных, о которой вы просили, но она имеет смысл.