我试图根据给定的输出字段从JSON数据中提取数据,但没有得到好的结果。
例如
给定我想要的字段:
Array
(
[0] => id
[1] => name
[2] => email
[3] => optin_email
)
这些字段存在于我的数据字符串中,我想将它们导出到CSV。
我能做到,硬编码
foreach ($jsonString as $value) {
$row = [
$value->id,
$value->name,
$value->email,
$value->phone
];
print_r($row);
}
以上内容将为我提供所需的列表/文件。但是,我想根据数组中的数据使其动态,因此,例如,当这是数组时:
Array
(
[0] => id
[1] => name
)
这应该是我的输出:
foreach ($jsonString as $value) {
$row = [
$value->id,
$value->name
];
print_r($row);
}
所以我需要动态创建
$value->{var}
我一直在努力,但我再也看不清楚了。
尝试过这个:
$rowFields = '';
foreach ($export_datafields AS $v) {
$rowFields .= '$value->' . $v . ',';
}
$trimmed_row_fields = rtrim($rowFields, ',');
foreach ($jsonString as $value) {
$row = $trimmed_row_fields;
print_r($row);
}
还有几种变体:
foreach ($jsonString as $value) {
$row = [$trimmed_row_fields];
print_r($row);
}
问题是:如何获得
$value->VAR
当我只知道VAR名称并且需要前缀$value->对象时,作为有效的数组键。
我最终使用了以下对我有效的代码。如果有人对我最初的问题还有答案,请开枪。知道这一切总是很好的。
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=$csvFileName");
header("Pragma: no-cache");
header("Expires: 0");
$new_row = implode(",", $export_datafields) . "n";
foreach ($jsonString as $value) {
foreach ($export_datafields AS $v) {
$new_row .= $value->$v . ',';
}
$new_row = substr($new_row, 0, -1);
$new_row .= "n";
}
echo $new_row;