尝试使用php转义文件中的某些值?

尝试使用php转义文件中的某些值?,php,Php,我有一个我想打开的文件,一个csv文件,我想对每行数据的第1个和第4个值进行转义,一个由$i表示的数据记录 当我说数据记录时,我指的是每个被逗号分割的数据,即 数据1,数据2,数据3,数据4。。。。等等 这是我目前的解决方案: while (($data = fgetcsv($file_opener, 1000, ",")) !== FALSE) { $num = count($data); for ($i=0; $i < $num; $i

我有一个我想打开的文件,一个csv文件,我想对每行数据的第1个和第4个值进行转义,一个由
$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.
              }
while(($data=fgetcsv($file\u opener,1000,“,”))!==FALSE){
$num=计数($data);
对于($i=0;$i<$num;$i++){
//对于每个第二和第三个值,推送到阵列
数组推送($Ages,$data[$i]);
//如果第一个和第四个值不起作用。
}
我希望这不会让人困惑,如果您需要澄清,请让我知道,我确实检查了php文档,我试图使用array_chunk和map方法,但我不知道如何在这个例子中使用它们。谢谢($data=fgetcsv($file_opener,1000,“,”)!==FALSE){
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]);
        }
    }

}
$num=计数($data); 对于($i=0;$i<$num;$i++){ 如果($i==1 | |$i==2){ 数组推送($Ages,$data[$i]); } } }
如果您希望
$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]);
    }

}
如果多维和 如果输入相同,则此代码:

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);
array(
    (554, 64, 34, 24, 43, 76), 
    (322, 43, 23, 54, 54), 
    (34, 5654, 43, 2, 5)
);

仍然不确定要实现什么,但此脚本将从记录中的每个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;
}

我也在考虑使用模数来查看余数,但我不确定这是否是最有效的方法,另一种方法是使用一个$row数组并对照它进行检查。“escape”表示“discard”?即,如果输入是
1,2,3,4,5,6
,则生成的数组将是
array(2,3,5,6)
?如果输入是
1,2,3,4,5,6,7,8
,那么数组将是
array(2,3,6,7)
您能给出一个包含一些行的输入文件示例和一个您想要的输出数组示例吗?我知道您在做什么,但我有1000条记录,所以这只在第一行中有效?这适用于每行,但只保留每行的第二个和第三个值。正如您所说-
//对于每一个第二个和第三个值,按入数组
恭喜你猜到了这个规格;)
2, 3, 6, 7
b, c, f, g, j, k
II, III, VI, VII