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 に答える