0

我知道我的问题的标题可能令人困惑,但我不太确定如何简洁地解释我想要做的事情。

我正在尝试遍历一组 CSV 并将数据加载到具有不同名称的变量中。在下面的示例中,在每个循环中通过数组而$foo_data不是$MSFT_data, $AAPL_data, 和。$FB_data$stocks

$stocks = array($msft, $aapl, $fb);

foreach ($stocks as $stock) {
    $fh = fopen($stock, 'r');
    $header = fgetcsv($fh);

    $foo_data = array();
    while ($line = fgetcsv($fh)) {
        $foo_data[] = array_combine($header, $line);
    }

    fclose($fh);
}

如果您需要更多信息,请告诉我。

4

2 回答 2

2

有两个问题。第一个是您无法获取变量名称,因此脚本无法知道存在$msft, $aapl, $fb,因此您需要将名称与数组一起传递。第二个是你需要可变变量。

尝试

$stocks = array('MSFT' => $msft, 'AAPL' => $aapl, 'FB' => $fb);
foreach ($stocks as $key=>$stock) {
    $fh = fopen($stock, 'r');
    $header = fgetcsv($fh);

    $varname = $key . '_data';

    $$varname  = array(); //the double $$ will set the var content as variable ($MSFT_data)
    while ($line = fgetcsv($fh)) {
        ${$varname}[] = array_combine($header, $line);

       //the {} are needed to let PHP know that $varname is the name of the variable and not $varname[].
    }

    fclose($fh);
}
于 2013-03-07T07:56:53.380 回答
0
$MSFT_data = $foo_data[0];
$AAPL_data = $foo_data[1];
$FB_data = $foo_data[2];

这对你有什么作用?

于 2013-03-07T07:54:11.597 回答