0

我是 php 的初学者。在我的应用程序中,我必须读取一个 csv 文件并将每行的值存储在两个变量中:$namelatin.

 while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

                foreach($data as $value)
                {
                        if($i>8){
                        // $fgmembersite->InsertUserBirds($value);
                        echo $value;
                        }

                    }
                     $i++;
                  echo '<br/>' ;

               } fclose($handle);

每行行包含四个或三个单词($name是第一个和第二个单词(如果行的长度是 4 个单词)并$latin存储最后两个单词: 页

我该怎么做才能添加数组$latin$name

4

2 回答 2

1

似乎这个将完全满足您的需要:

$name = $latin = array();
while (($data = fgetcsv($handle, 1000, ",")) !== false) {
    if (count($data) === 4) {
        $name[] = $data[0];
        $name[] = $data[1];
        $latin[] = $data[2];
        $latin[] = $data[3];
    } elseif ($count($data) === 3) {
        $name[] = $data[0];
        $latin[] = $data[1];
        $latin[] = $data[2];
    }
}
于 2013-05-26T11:34:01.180 回答
0

处理这些数据的最佳方法是寻找更可靠的来源!

如果您必须使用此文件,请尝试以下操作:

  1. 使用 fgets 逐行处理文件。
  2. 所有物种名称都是小写的,所有属名都是大写的,因此您可以搜索最右边的大写字母。从那时起,一切都是拉丁语,左边的一切都是通用的。

更优雅的方法是使用 preg_match 查找最后一个大写字母。我不擅长正则表达式,所以希望可以对我的进行改进,但下面将返回您的拉丁名称作为数组“匹配”的最后一个索引。如果你已经走到了这一步,你应该能够弄清楚其余的。

$matches=array();
$pattern="/([A-Z][a-z ]*)*/";
$testdata="Scabies Mite Sarcoptes scabii";
preg_match($pattern,$testdata,$matches);
var_dump($matches);

虽然在学习 PHP 的同时学习 regexp 似乎令人生畏,但即使是一点点努力也会得到很好的回报,而且这个网站上有很多有用的成员。

于 2013-05-26T11:51:28.007 回答