我希望你能帮我解决这个尴尬的问题。 我试图从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
)
提前感谢您的帮助!一切顺利!
答案 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";
}