0

CSV をインポートしようとしていますが、列を削除して、選択した列のみをインポートできます。

したがって、選択したフィールドの配列と CSV ファイルがあります。行を削除できますが、列をスキップするのに問題があります。

これは、テーブルを表示するために使用しているもので、列の削除をテストしようとしています。ここには派手なものはありません。if ステートメントなどを配置する場所を知る必要があります。ヒント、提案、サンプルはすべて歓迎します!

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                        echo("<tr>\r\n");
                        foreach ($data as $index=>$val) {
                        echo("\t<td>$val</td>\r\n");
                        } 
                        echo("</tr>\r\n");
               } //end while

残りの行のみを許可するには、if ステートメントをどこに配置すればよいですか? in_array、array_diff などを試しましたが、何も機能していないようです。

これを入力しているので、挿入する前に PHP を使用して列を削除する必要がありますか? ベストプラクティスは何ですか?

ありがとう

4

3 に答える 3

0

表示する列を含む配列を設定し(私の例1および3)、foreachのキー部分を使用して、スキャンしている列がどれであるかを知ることができます。

<?
$handle = fopen("test.csv", "r");

$columns = array(1,3);
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        echo("<tr>\r\n");
        foreach ($data as $index=>$val) {
                if (in_array($index+1, $columns)) {
                        echo("\t<td>$val</td>\r\n");
                }
        }
        echo("</tr>\r\n");
} //end while

?>
于 2012-06-10T00:35:29.293 に答える
0

試す:

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    echo("<tr>\r\n");

    foreach ($data as $index=>$val) {
        if($index != BADINDEX) {
            echo("\t<td>$val</td>\r\n");
        }   
    }
    echo("</tr>\r\n");
}

BADINDEXは、削除する列番号です (最初の列は 0)

fgetcsv から得られるのは行であり、列ではないため、印刷される行ごとに目的の列を除外するだけで済みます。これは、foreach ブロックのインデックスをチェックすることによって行われます。

于 2012-06-10T00:30:51.633 に答える