Php 在foreach循环中声明不同的变量
我知道我的问题的标题可能会让人困惑,但我不太确定如何简明扼要地解释我要做的事情 我试图循环通过CSV数组,并将数据加载到具有不同名称的变量中。在我下面的示例中,通过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'); $
$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);
}