您好我有这个脚本,它从.txt:
获取数据public function parse_sigle_item1($filename, $vnum)
{
$result = array();
$fp = fopen($filename, "r");
if (($headers = fgetcsv($fp, 0, "\t")) !== FALSE) {
//remove all non characters
$headers = $results = array_map( function ($n) {
return preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $n);
}, $headers );
//Get index of vnum
$vnumIdx = array_search( "VNUM" , $headers);
if ($headers)
while (($line = fgetcsv($fp, 0, "\t")) !== FALSE)
if ($line)
if ( sizeof($line)==sizeof($headers) && $line[$vnumIdx] == $vnum )
$result[ $line[$vnumIdx] ] = array_combine($headers,$line);
}
fclose($fp);
return $result;
}
我的txt标题如下:(制表符分隔)
VNUM TYPE ICON MODEL
我有两种类型的线,一种有MODEL
而另一种不具有:
1 ETC test.png test1
2 ETC test2.png
如您所见VNUM
2中没有MODEL
或标签...
我需要帮助来填充MODE
0或者其他内容没有错误,如:
两个参数应具有相同数量的元素
谢谢!
答案 0 :(得分:2)
您可以使用array_pad()
确保您的数据数据与标题相同...
while (($line = fgetcsv($fp, 0, "\t")) !== FALSE) {
if ( $line[$vnumIdx] == $vnum ) {
$line = array_pad($line, count($headers), 0);
$result[ $line[$vnumIdx] ] = array_combine($headers,$line);
}
}
您可以轻松更改填充它的值,并且可能的优化是存储$ headers数组的大小,而不是每次都获取它。