2

開きたいこのファイル、csv ファイルがあり、データの各行の 1 番目と 4 番目の値 (. で表されるデータ レコード) をエスケープしたい$i

データ レコードと言うときは、コンマで区切られた各データを意味します。

data1、data2、data3、data4 ....など

これはこれまでの私の解決策です:

while (($data = fgetcsv($file_opener, 1000, ",")) !== FALSE) {
          $num = count($data);

              for ($i=0; $i < $num; $i++) {
                // for each 2nd and 3rd value push to array
                 array_push($Ages, $data[$i]);
               // if 1st and fourth value do nothing.
              }

これが混乱しないことを願っています。明確化が必要な場合はお知らせください。phpドキュメントを確認しました。array_chunkメソッドとmapメソッドを使用しようとしていましたが、このインスタンスでそれらを使用する方法がわかりません。ありがとう

4

3 に答える 3

1

何を達成しようとしているのかはまだわかりませんが、このスクリプトは、レコード内の各 4 列グループから 1 番目と 4 番目の各要素を削除します。

<?php
while( false!==($record=getNextRow()) ) {
    foreach($record as $k=>$v) {
        $rpos = $k % 4;
        if ( 0==$rpos || 3==$rpos ) {
            unset($record[$k]);
        }
    }
    echo join(', ', $record), "\n";
}

function getNextRow() {
    // just boilerplate to make it a self-contained example
    // this would be plain fgetcsv in yor case
    static $source = array('1,2,3,4,5,6,7,8', 'a,b,c,d,e,f,g,h,i,j,k,l', 'I,II,III,IV,V,VI,VII,VIII','IX');
    list(,$r) = each($source);
    return $r ? str_getcsv($r) : false;
}

版画

2, 3, 6, 7
b, c, f, g, j, k
II, III, VI, VII
于 2012-08-31T12:11:30.180 に答える
0
while (($data = fgetcsv($file_opener, 1000, ",")) !== FALSE) {
    $num = count($data);

    for ($i=0; $i < $num; $i++) {
        if($i == 1 || $i == 2) {
            array_push($Ages, $data[$i]);
        }
    }

}
于 2012-08-31T11:55:59.317 に答える
0

$Ages一次元か多次元かはわかりません。

1 次元の場合で、入力が次の場合:

32, 554, 64, 34, 24, 43, 76
43, 322, 43, 543, 23, 54, 54
45, 34, 5654, 23, 43, 2, 5

このコードは次のようになり$Agesます。

while (($data = fgetcsv($file_opener, 1000, ",")) !== FALSE) {
    $num = count($data);

    for ($i=1; $i < $num; $i++) {
        if($i == 3) {
            continue;
        }
        array_push($Ages, $data[$i]);
    }

}

次のように$Agesなります。

array(554, 64, 34, 24, 43, 76, 
    322, 43, 23, 54, 54, 
    34, 5654, 43, 2, 5);

多次元の場合で、入力が同じ場合、次のコード:

while (($data = fgetcsv($file_opener, 1000, ",")) !== FALSE) {
    $num = count($data);

    unset(data[0]);
    unset(data[3]);

    array_push($Ages, $data);

}

次のよう$Agesになります。

array(
    (554, 64, 34, 24, 43, 76), 
    (322, 43, 23, 54, 54), 
    (34, 5654, 43, 2, 5)
);
于 2012-08-31T12:03:56.923 に答える