我正在读取 csv 文件,array_map() 函数在这个函数中做了什么?
I am reading csv file and what array_map() function does in this function?
在 PHP 中,我想使用以下函数读取“.CSV”文件。
function csv_to_array($filename='a.txt', $header_exist=true, $delimiter="\t")
{
if(!file_exists($filename) || !is_readable($filename))
return FALSE;
$header = NULL;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE)
{
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
{
if($header_exist)
{
if(!$header)
$header = array_map('trim', $row);
else
$data[] = array_combine($header, $row);
}
else
$data[] = $row;
}
fclose($handle);
}
return $data;
}
我对 array_map()
函数有点困惑。我认为应该将列名映射到每个属性,那么如何获取和显示 eacg 属性?
谢谢!
在PHP中,array_map(function_name, array)
函数将array
的每个值发送给function_name()
和returns一个新的array
。
在您的例子中,$header
包含由 ,
分隔的列名的 string
。这意味着 array_map()
函数将它们转换为 array
.
希望你能明白。
打开 array_map
的手册页,您可以看到:
array_map — Applies the callback to the elements of the given arrays
所以,你有一个回调,它是 trim
(一个核心 php 函数)和一个数组,它是 $row
。因此,函数 trim
现在应用于 $row
.
的每个元素
所以,它相当于:
$header = [];
foreach ($row as $item) {
$header[] = trim($item);
}
在 PHP 中,我想使用以下函数读取“.CSV”文件。
function csv_to_array($filename='a.txt', $header_exist=true, $delimiter="\t")
{
if(!file_exists($filename) || !is_readable($filename))
return FALSE;
$header = NULL;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE)
{
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
{
if($header_exist)
{
if(!$header)
$header = array_map('trim', $row);
else
$data[] = array_combine($header, $row);
}
else
$data[] = $row;
}
fclose($handle);
}
return $data;
}
我对 array_map()
函数有点困惑。我认为应该将列名映射到每个属性,那么如何获取和显示 eacg 属性?
谢谢!
在PHP中,array_map(function_name, array)
函数将array
的每个值发送给function_name()
和returns一个新的array
。
在您的例子中,$header
包含由 ,
分隔的列名的 string
。这意味着 array_map()
函数将它们转换为 array
.
希望你能明白。
打开 array_map
的手册页,您可以看到:
array_map — Applies the callback to the elements of the given arrays
所以,你有一个回调,它是 trim
(一个核心 php 函数)和一个数组,它是 $row
。因此,函数 trim
现在应用于 $row
.
所以,它相当于:
$header = [];
foreach ($row as $item) {
$header[] = trim($item);
}