2

我有这个我想打开的文件,一个 csv 文件,我想转义每行数据的第一个和第四个值,一个由 . 表示的数据记录$i

当我说数据记录时,我指的是用逗号分隔的每个数据,即

数据1,数据2,数据3,数据4 ....等。

到目前为止,这是我的解决方案:

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成为一维或多维。

一维的情况下,如果输入是:

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 回答