我的每个用户都有一个JSON编码的字符串保存到一个名为' JSON '的字段。会有多个多维项,但nutrients
并不总是一个元素。格式是:
$arr = array(
0 => array(
'name' => Input::get('name'),
'amount' => 5,
'time' => '2:00 am',
'nutrients' => array(
'Macro' => array(
'water' => 0,
'carbs' => 0,
),
'Micro' => array(
'zinc' => 0,
)
)
);
$user->json = json_encode($arr);
$user->save();
我想(在另一个视图中)将$user->json
转换为CSV文件。这是我在网上找到的最接近的代码,但我仍然得到一个错误('fputcsv()期望参数2是数组,对象给定'):
$user = Auth::user();
$json_obj = json_decode ($user->json);
$fp = fopen('file.csv', 'w');
foreach ($json_obj as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
如果我使用$json_obj = json_decode ($user->json, true);
,我得到错误"数组到字符串转换"
感谢任何帮助,如果需要更多的信息请告诉我。谢谢你!
你的数组中有数组…这就是为什么当你做json_decode($data, true)
时,你会得到错误。您必须决定如何格式化其他数据,如"营养物"。我希望你明白了。问题是它期望的是一个原始数据数组,而不是一个包含另一个数组的数组。