我目前正在尝试使用PHP从csv文件中获取一些信息。我正在使用以下代码并获得以下输出;
function readCSV($csvFile){
$file_handle = fopen($csvFile, 'r');
while (!feof($file_handle) ) {
$line_of_text[] = fgetcsv($file_handle, 1024);
}
fclose($file_handle);
return $line_of_text;
}
$csvFile = '500.csv';
$csv = readCSV($csvFile);
$keys = $csv[0];
$step = $csv[1];
foreach ($step as $k=>$v)
{
$a = array("$keys[$k]");
$b = array("$v");
$c = array_combine($a, $b);
echo '<pre>';
print_r($c);
echo '</pre>';
}
我得到了单个数组的输出,比如;
Array
(
[first_name] => bob
)
Array
(
[last_name] => smith
)
Array
(
[company_name] => bobs logs
)
我希望输出在一个单独的数组中,显示为;
Array
(
[first_name] => bob
[last_name] => smith
[company_name] => bobs logs
)
如果有人能指出我哪里出了问题,我会通知你的!
array_combine
函数
返回组合的数组,如果每个数组的元素数不相等,则返回FALSE。
您的代码在每个循环迭代中创建一个新数组
要获得单个数组,请更改循环代码,如下所示:
...
$c = [];
foreach ($step as $k => $v)
{
$c[$keys[$k]] = $v;
}
echo '<pre>';
print_r($c);
echo '</pre>';
更改:
$a = array("$keys[$k]");
$b = array("$v");
$c = array_combine($a, $b);
收件人:
$c[$keys[$k]] = $v;
并在循环后执行此操作:
echo '<pre>';
print_r($c);
echo '</pre>';
<?php
function readCSV($csvFile)
{
$file_handle = fopen($csvFile, 'r');
while (!feof($file_handle)) {
$line_of_text[] = fgetcsv($file_handle, 1024);
}
fclose($file_handle);
return $line_of_text;
}
$csvFile = '500.csv';
$csv = readCSV($csvFile);
$keys = $csv[0];
$step = $csv[1];
$output = array();
foreach ($step as $k => $v) {
$a = array("$keys[$k]");
$b = array("$v");
$c = array_combine($a, $b);
$output = array_merge($output, $c);
}
echo '<pre>';
print_r($output);
echo '</pre>';
我做了什么改变?我把外面的foreach那些echo和print_r加上
$output = array_merge($output, $c);
它将每个新数组合并为$output数组中的一个新元素
最后我们打印$output数组。
这应该可以随心所欲地工作,无论如何,如果您将来需要更改某些内容,您可以在此处检查array_merge函数