【问题标题】:Get array object data from exploded array fields in foreach loop从 foreach 循环中的爆炸数组字段获取数组对象数据
【发布时间】:2020-07-11 02:35:48
【问题描述】:

我正在尝试根据给定的输出字段从我们的 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-> 对象时作为有效的数组键。

【问题讨论】:

    标签: arrays php-7 dynamic-arrays


    【解决方案1】:

    我最终使用了以下对我有用的代码。如果有人仍然对我的原始问题有答案,请拍摄。总是很高兴知道这一切。

    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;
    

    【讨论】:

      猜你喜欢
      • 2014-02-09
      • 2012-04-05
      • 1970-01-01
      • 2017-11-08
      • 1970-01-01
      • 2021-08-26
      • 2015-03-26
      • 1970-01-01
      • 2019-07-26
      相关资源
      最近更新 更多