我正在编写一个脚本,它使用 CURL 从 API 获取 JSON 数据。在查看如何将数据从 JSON 存储到数据库本身时,我遇到了一个稍微令人困惑的问题。
该表显示了 JSON 键和相应的 SQL 列标题。
----------------------------
| JSON | MySQL |
----------------------------
| name | name |
| street | address_line_1 |
| city | city |
| country | country |
| zip | postcode |
| id | api_id |
----------------------------
返回了几种不同的 JSON 数据树,其中的键名称与数据库中的名称完全无关,因此总的来说让 SQL 标题与键匹配是不可能的。
假设我已经获取并在返回的 JSON 上运行 JSON_DECODE。
$json[0] = (
['name'] => 'Venue Name',
['street'] => 'Street Name',
['city'] => 'City',
['country'] => 'United Kingdom',
['zip'] => 'NE123ER',
['id'] => 'API Identifier'
);
并且我已经成功地使用以下代码输出了所有项目(返回的一些数据是嵌套的,例如在本例中)。
foreach($json as $event)
{
$iter = new RecursiveArrayIterator($event);
foreach(new RecursiveIteratorIterator($iter) as $key => $value) {
if($iter->hasChildren())
{
if($key === 'id'){
} elseif($key === 'name'){
} elseif($key === 'street'){
} elseif($key === 'city'){
} elseif($key === 'country'){
} elseif($key === 'zip'){
}
}
}
}
我知道我基本上需要得到一个结果数据数组,然后我才能将其写入 MySQL 数据库。
$mysql_write[0] = (
['name'] => 'Venue Name',
['address_line'] => 'Street Name',
['city'] => 'City',
['country'] => 'United Kingdom',
['postcode'] => 'NE123ER',
['api_id'] => 'API Identifier'
);
但我不知道如何更改 key 。一个想法是制作一个转换树类型的东西,其中它们的键将是当前目标,并且在写入新数组以进行 SQL 写入时将使用该值。
$venue_tree = array(
array('name' => 'name'),
array('street' => 'address_line_1'),
array('city' => 'city'),
array('country' => 'country'),
array('zip' => 'postcode'),
array('id' => 'facebook_id')
);
但在这一点上,我自己感到困惑。这对任何人都有意义吗?
最佳答案
您是否期待这个,将键映射到其他键。
<?php
ini_set('display_errors', 1);
$json = array(
'name' => 'Venue Name',
'street' => 'Street Name',
'city' => 'City',
'country' => 'United Kingdom',
'zip' => 'NE123ER',
'id' => 'API Identifier'
);
$venue_tree = array(
'name' => 'name',
'street' => 'address_line_1',
'city' => 'city',
'country' => 'country',
'zip' => 'postcode',
'id' => 'facebook_id');
$result=array();
foreach($venue_tree as $key => $changedKey)
{
$result[$changedKey]=$json[$key];
}
print_r($result);
输出:
Array
(
[name] => Venue Name
[address_line_1] => Street Name
[city] => City
[country] => United Kingdom
[postcode] => NE123ER
[facebook_id] => API Identifier
)
关于php - 使用多维数组将 JSON 数据归档到 SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43742743/