我有这个我要打开的文件,一个csv文件,我想要转义每行数据的第一和第四个值,一个由$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方法,但我不知道如何在这个实例中使用它们。感谢
答案 0 :(得分: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
答案 1 :(得分: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]);
}
}
}
答案 2 :(得分: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)
);