2

我希望你能帮助我解决这个尴尬的问题。我正在尝试从 csv 文件中的所有行中获取某个值,在 in_array() 之前一切正常。

CSV 文件如下所示:

Mach Vu,11-25-2012  21:32:39,row1
Mach Vu,11-25-2012  21:32:46,row2

我试图从每一行(即'row1','row2')中获取最后一个值。

这是我的代码:

$i = 1;

foreach($array2 as $key=>$value) {
    foreach($array2[$key] as $value2) {
        if($i % 3 == 0) {
           $array3[] = $value2;
        }
        $i++;
    }
}
print_r($array3);
echo "<br />";


if(in_array("row1", $array3)) {echo "yes";} else {echo "no";}

阵列 3 正在打印:

Array ( 
   [0] => row1
   [1] => row2
)

提前感谢您的帮助!祝一切顺利 !

4

2 回答 2

3

这可能会为您解决问题,同时还可以稍微减少您的代码并大大提高性能。

我的猜测是 in_array 由于额外的空白而无法正常工作,因此添加了 trim()

$search = "row1";
$col = 2;
$found = false;

foreach ($array2 as $key => $value) {
    if (trim($value[$col]) == $search) {
        $found = true;
        break;
    }
}

print_r($array3);
print($found ? "yes" : "no");
于 2012-11-26T05:54:46.493 回答
1

更简单的东西怎么样?

$s = "Mach Vu,11-25-2012  21:32:39,row1";
$parsed_string = str_getcsv($s);
print $parsed_string[2];

这将打印row1. 请参阅str_getcsv.

如果您正在阅读文件,请尝试以下操作(来自fgetcsv手册页上的示例):

if (($handle = fopen("test.csv", "r")) !== FALSE) {
  while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $array3[] = $data[2];
   }
}
fclose($handle);

if (in_array("row1",$array3)) {
    print "yes";
}
于 2012-11-26T05:49:45.850 回答