我确定该操作有正确的名称,但我无法找到它。 好吧,我正在寻找的是一个PHP函数来转换JSON数据(解码为关联数组),如下所示:
{
"id": 768570754,
"status": "paid",
"status_detail": null,
"date_created": "2013-05-27T10:01:50.000-04:00",
"date_closed": "2013-05-27T10:04:07.000-04:00",
"order_items": [{
"item": {
"id": "MLB12345678",
"title": "Samsung Galaxy",
"variation_id": null,
"variation_attributes": []
},
"quantity": 1,
"unit_price": 499,
"currency_id": "BRL"
}]
}
使用包含这些列的表格式,如果其子项中存在多行,则某些数据可能会重复:
id | status | status_detail | date_created | date_closed | item_id | item_title | item_variation_id | quantity | unit_price
我希望将此作为适合任何JSON数据的标准过程,无论是否找到嵌套数组。
PHP中是否有预构建函数来处理它?</ p>
答案 0 :(得分:1)
存储这是我想出的:
你需要一张具有以下结构的桌子
VARCHAR (id)
VARCHAR (key)
VARCHAR (value)
我把它命名为'productmeta',但没关系。
然后您应该能够通过调用storeDataset(DATA);
来存储具有以下代码的任意数据集
function storeDataset($data){
if(!isset($data['id'])){ // check for id
throw new Exception('Missing ID field from dataset');
return;
}
// extract id
$id = $data['id'];
unset($data['id']);
// get key value pairs recursively
$pairs = getKeyValPairs($data,'');
$sql_parts = array();
for($i=0;$i<count($pairs);$i++){
$key = $pairs[$i]['key'];
$value = $pairs[$i]['value'];
$sql_parts[] = "($id, '$key', '$value')";
}
$sql_data = implode(',', $sql_parts);
$sql = 'INSERT INTO productmeta (`id`,`key`,`value`) VALUES '.$sql_data;
// TODO: execute $sql
}
function getKeyValPairs($arr,$level){
$pairs = array();
foreach ($arr as $key => $value) {
if(is_array($value))
$pairs = array_merge($pairs,getKeyValPairs($value,$level.$key.'.'));
else
$pairs[] = array('key'=>$level.$key,'value'=>$value);
}
return $pairs;
}
目前正试图对阅读部分进行编码......