Как преобразовать этот ассоциативный массив в этот вывод 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));