Как преобразовать этот ассоциативный массив в этот вывод json, используя json_encode()

У меня есть этот ассоциативный массив PHP.

array(
                'Location_1' => 'Link_1',
                'Location_2' => 'Link_2'
    )

Я хотел бы преобразовать его в вывод json с помощью json_encode(), который выглядит следующим образом;

[{"Location_name":"Location_1","Link_name":"Link_1"},{"Location_name":"Location_2","Link_name":"Link_2"}]

Как это может быть сделано? Мне кажется, что сложная часть состоит в том, как добавить имя_ местоположения и имя_файла впереди. Большое спасибо.

3 ответа

Решение
<?php
// original array
$a = array(
   'Location_1' => 'Link_1',
   'Location_2' => 'Link_2'
);
// transform
$b = array();
foreach($a as $key=>$value) {
    $b[] = array('Location_name'=>$key, 'Link_name'=>$value);
}

// output
echo json_encode($b);

?>

Результат:

[{"Location_name":"Location_1","Link_name":"Link_1"},{"Location_name":"Location_2","Link_name":"Link_2"}]

Итак обо всем по порядку:

преобразовать его в вывод json с помощью json_encode(), который выглядит следующим образом

Это невозможно. json_encode просто кодирует массивы в JSON, вам нужно самостоятельно выполнить форматирование.

И на этой ноте

array_map должен сделать свое дело.

Попробуй это:

$arr = array(
    'Location_1' => 'Link_1',
    'Location_2' => 'Link_2'
);

$output = array_map( 
    function( $key, $val ){
        return array(
            "Location_name" => $key,
            "Link_name" => $val
        );
    }, array_keys( $arr ), $arr );

echo json_encode( $output );

Вы можете использовать StdClass анонимные объекты.

<?php


$newArray = array();

$array = array(
  'Location_1' => 'Link_1',
  'Location_2' => 'Link_2'
);



foreach ($array as $key => $value) {

  $object     = new StdClass();
  $object->Location_name = $key;
  $object->Link_name = $value;
  $newArray[] = $object;
}


var_dump(json_encode($newArray));   
Другие вопросы по тегам