我基本上将csv文件employee_data的行读入一个名为$ data
的数组中$dataSrc = "persistence/employee_data.csv";
$dataFile = fopen($dataSrc, "r") or die("Unable to open file!");
$i=0; //index for the array
while (($data = fgetcsv($dataFile)) !== FALSE) {
//$data is an array of the csv elements
print_r($data);
}
fclose($dataFile);
将$data
数组插入print_r函数时,{@ 1}}数组中的元素如下所示。
Array ( [0] => JOHN WILLIAMS [1] => 6/8/1998 [2] => 55456434E [3] => 4321 )
Array ( [0] => SARAH JONES [1] => 15/01/1982 [2] => 56834645Q [3] => 1234 )
Array ( [0] => JAMES Brennan [1] => 09/05/1978 [2] => 25689514W [3] => 8575 )
此阵列中有3个阵列,但阵列中的每个阵列都没有单独的键。
当我尝试遍历数组时,它会给我一个警告 “警告:为foreach()提供的参数无效”
我知道像这样的数组
$food = array('Healthy'=>
array('Salad', 'Vegetables', 'Pasta'),
'Unhealthy'=>
array('Pizza','Ice cream'));
你可以使用这样的东西来访问数组数组中的元素。
foreach($food as $element => $inner_array)
{
echo $element;
foreach($inner_array as $item)
{
echo $item;
}
}
此方法不适用于我的$data
array
。
您将如何获得对$data
等数组的访问权限?
答案 0 :(得分:2)
由于 fgetcsv()逐行读取,因此$ data始终包含员工的最后一条记录,即单维数组。在这里你需要将数据存储到另一个数组(制作多维数组)
试试这个......
$dataSrc = "persistence/employee_data.csv";
$dataFile = fopen($dataSrc, "r") or die("Unable to open file!");
$i=0; //index for the array
//creating $result array for storing each employee data.
$result = [];
while (($data = fgetcsv($dataFile)) !== FALSE) {
//assign each employee data to $result array. now result will be multidimensional array.
$result[] = $data;
}
fclose($dataFile);
您现在可以使用
foreach($result as $resultKey => $employees)
{
//display key of $result.
echo $resultKey;
foreach($employees as $data)
{
echo $data;
}
}
答案 1 :(得分:0)
首先,你应该让你的$data
变量是一个数组,然后是array_push($data, fgetcsv($dataFile))
,所以你可能想做这样的事情:
$dataArray = [];
while (($data = fgetcsv($dataFile)) !== FALSE) {
array_push($dataArray, $data);
}
然后按照: 由于您的数组不是相关的而不是:
foreach($food as $element => $inner_array)
{
echo $element;
foreach($inner_array as $item)
{
echo $item;
}
}
在你的代码中你没有=> inner_array
,你的代码如下:
foreach($food as $element)
{
foreach($element as $item)
{
echo $item;
}
}