从foreach循环中分解的数组字段中获取数组对象数据



我试图根据给定的输出字段从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;

相关内容

  • 没有找到相关文章

最新更新