【问题标题】:Parsing CSV file in PHP - Function returning undefined variable在 PHP 中解析 CSV 文件 - 返回未定义变量的函数
【发布时间】:2013-11-19 15:32:44
【问题描述】:

我正在尝试从 csv 文件中检索某些元素以插入到我们的客户报告数据库中。我正在尝试编写一个函数来解析数据并返回必要的信息。但是,我的函数返回一个未定义的变量,我不太确定如何解决这个问题。我确定这是一个初学者的问题,但我仍然是在 php.ini 中编写自己的函数和数组的新手。感谢您的帮助!也没有 API 可以直接拨入以获得更可靠的数据源。

代码如下:

// Reading the csv file, returning an array of rows
$rows = array();

foreach (file('prerolldaily.csv') as $line){
    $rows[] = str_getcsv($line);
}   

function extractInfo($e){
    $returnImpressionsRow = $rows[$e][4];
    $returnClicksRow = $rows[$e][5];
    $returnCompletedViewsPercentage = $rows[$e][7];
    $returnCPM = $rows[$e][8];
    $returnTotalSpend = $rows[$e][9];
    $clientName = $rows[$e][11];
    $finalPercentage = substr($returnCompletedViewsPercentage, 0, -1);
    $finalCPM = substr($returnCPM, 1);
    $totalSpend = substr($returnTotalSpend, 1);
    return $clientName . " Impressions: ". $returnImpressionsRow . " Clicks: " . $returnClicksRow. " Completed Views: " . $finalPercentage . "%" . " CPM: $" . $finalCPM . " Total Spend: $" . $totalSpend;
}

// Tell browser to treat this as a Plain Text file
header('Content-Type: text/plain');

extractInfo(0);

print_r($rows)

屏幕输出:(我需要报告的客户超过 15 个)删除了一些元素(客户名称)

Array
(
    [0] => Array
        (
            [0] => switch active/paused CLIENT NAME CLIENT NAME Sites Ads Pre-roll (30s)
            [1] => Day 12 out of 19 Nov 8, 2013 Nov 26, 2013
            [2] => $20.00
            [3] => $50.00
            [4] => 3,360
            [5] => 12
            [6] => 0.36%
            [7] => 57%
            [8] => $14.46
            [9] => $48.58
            [10] => edit placement copy placement delete see report attach ad
            [11] => CLIENT NAME
        )

【问题讨论】:

  • 你能告诉我们错误信息吗?

标签: php arrays function fgetcsv


【解决方案1】:

$rows 在您的函数中未定义,您需要将其作为参数发送:

function extractInfo($rows, $e){
    $returnImpressionsRow = $rows[$e][4];
    $returnClicksRow = $rows[$e][5];
    $returnCompletedViewsPercentage = $rows[$e][7];
    $returnCPM = $rows[$e][8];
    $returnTotalSpend = $rows[$e][9];
    $clientName = $rows[$e][11];
    $finalPercentage = substr($returnCompletedViewsPercentage, 0, -1);
    $finalCPM = substr($returnCPM, 1);
    $totalSpend = substr($returnTotalSpend, 1);
    return $clientName . " Impressions: ". $returnImpressionsRow . " Clicks: " . $returnClicksRow. " Completed Views: " . $finalPercentage . "%" . " CPM: $" . $finalCPM . " Total Spend: $" . $totalSpend;
}

...

extractInfo($rows, 0);

查看variable scope in the php manual

【讨论】:

  • 感谢您的帮助并指向 php 手册!如此简单的解决方案。
猜你喜欢
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-27
  • 2014-04-29
  • 1970-01-01
  • 2023-04-08
相关资源
最近更新 更多