in_array的问题,返回false

时间:2012-11-26 05:41:16

标签: php arrays csv

我希望你能帮我解决这个尴尬的问题。 我试图从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
)

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

2 个答案:

答案 0 :(得分:2)

这可能会为您解决问题,同时也会削减您的代码。

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

foreach ($array2 as $key => $value) {
    $array3[] = trim($array2[$key][count($array2[$key])-1]);
}

print_r($array3);
echo "<br />";    
echo in_array("row1", $array3) ? "yes" : "no";

答案 1 :(得分:1)

更简单的事情怎么样?

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

这将打印row1。请参阅str_getcsv的文档。

如果您正在阅读文件,请尝试此操作(来自fgetcsv manual page的示例):

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";
}