Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在foreach循环中声明不同的变量_Php - Fatal编程技术网

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

Php 在foreach循环中声明不同的变量,php,Php,我知道我的问题的标题可能会让人困惑,但我不太确定如何简明扼要地解释我要做的事情 我试图循环通过CSV数组,并将数据加载到具有不同名称的变量中。在我下面的示例中,通过$stocks数组,每个循环中的$foo\u data将是$MSFT\u data,$AAPL\u data和$FB\u data $stocks = array($msft, $aapl, $fb); foreach ($stocks as $stock) { $fh = fopen($stock, 'r'); $

我知道我的问题的标题可能会让人困惑,但我不太确定如何简明扼要地解释我要做的事情

我试图循环通过CSV数组,并将数据加载到具有不同名称的变量中。在我下面的示例中,通过
$stocks
数组,每个循环中的
$foo\u data
将是
$MSFT\u data
$AAPL\u data
$FB\u data

$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);
}
如果你需要更多信息,请告诉我

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

这对你有什么作用?

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

试一试


错误是什么?问题是什么?为什么不使用2D阵列<代码>$stock\u data[$stock][]=数组\u组合($header,$line)在我的示例中,我试图通过foreach将数据保存到每个循环中不同名称的变量中。因此问题是?我正在寻找有关如何完成上述操作的建议…我在
$$varname[]=array\u combine($header,$line)行上得到错误“致命错误:无法使用[]读取”
我忘了在$varname周围添加
{}
$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);
}