#php #arrays #json #foreach #decode
Вопрос:
У меня есть этот php-код, поскольку я пытаюсь выполнить определенную функцию в своем php-проекте, я правильно кодирую реализацию, но столкнулся с небольшой проблемой.
<?php echo '<script type="text/javascript">';
$data = array(
'base' => 'USD',
'alter' => 'ETH',
'data' => array()
);
foreach ($cryptos as $row) {
$sy = $row["symbol"];
$data['data'][] = array(
"$sy" => [
"rate" => 1.552000000000000,
"min" => 1.0077600000000000,
"max" => 10.077600000000000,
"code" => $row["symbol"],
"dp" => 8
],
);
}
print_r("var fxCur = " . json_encode($data));
Запустив приведенный выше код, я получил этот результат ниже, это ожидаемый результат, но я хочу опустить [] между данными
{
"base":"USD",
"alter":"ETH",
"data":[
{
"BTC":{
"rate": 1.552000000000000,
"min": 1.0077600000000000,
"max": 10.077600000000000,
"code":"BTC",
"dp":8
}
},
{
"ETH":{
"rate": 1.552000000000000,
"min": 1.0077600000000000,
"max": 10.077600000000000,
"code":"ETH",
"dp":8
}
}
]
}
Но на самом деле я хотел такого результата
{
"base":"USD",
"alter":"ETH",
"data":{
"BTC":{
"rate": 1.552000000000000,
"min": 1.0077600000000000,
"max": 10.077600000000000,
"code":"BTC",
"dp":8
},
"ETH":{
"rate": 1.552000000000000,
"min": 1.0077600000000000,
"max": 10.077600000000000,
"code":"ETH",
"dp":8
},
}
}
Ответ №1:
Вы говорите ему, чтобы он построил структуру данных таким образом.
$data['data'][] = array(
"$sy" => [
...
]
);
В этой строке говорится: «добавьте элемент $data['data']
в следующий целочисленный индекс и установите его равным массиву, например [ "BTC" => [ ... ]]
Я думаю, что ты хочешь этого:
$data['data'][$sy] = [
"rate" => 1.552000000000000,
"min" => 1.0077600000000000,
"max" => 10.077600000000000,
"code" => $row["symbol"],
"dp" => 8
];