在foreach循环中声明不同的变量

时间:2013-03-07 07:51:06

标签: php

我知道我的问题的标题可能令人困惑,但我不太清楚如何解释我正在努力简明扼要地做什么。

我正在尝试遍历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); } 数组。

{{1}}

如果您需要更多信息,请与我们联系。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

$MSFT_data = $foo_data[0];
$AAPL_data = $foo_data[1];
$FB_data = $foo_data[2];

这对你有什么用?