为了账号安全,请及时绑定邮箱和手机立即绑定

如果语句在前一个 PHP 中

如果语句在前一个 PHP 中

PHP
慕的地6264312 2022-09-30 16:25:52
我有从txt文件中提取数组的代码,它正在删除我不需要的列并将其插入到csv文件中。我正在使用的代码是删除列,但我希望它检查两列,如果一个为空,则将其删除并使用下一列。它不是根据列 12 是否为空而循环每行,它基本上只是对第一行运行一次 if 语句并将其应用于每一行。while ($data = fgetcsv($f_in, 8000, "|")) {    $columns = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]; //index of columns    if (empty($columns['12'])) {        $unwanted = [1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]; //index of unwanted columns        foreach($unwanted as $i) {            unset($data[$i]);        }    } else {        $unwanted = [1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]; //index of unwanted columns        foreach($unwanted as $i) {            unset($data[$i]);        }    }    fputcsv($f_out, $data, ',', '"');我得到相同的结果,而不是为每行循环。    if ($columns['12'] > 0) 谢谢
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

这是一个更干净的解决方案:你基本上希望在每行的第13列的空性的结果csv基中有两个项目($data[12]指向第13列作为数组从元素0开始计数)。


所以不需要做所有的循环,而只是从两个数组元素创建你需要的数组并推动它们。


while ($data = fgetcsv($f_in, 8000, "|")) {

    if (empty($data[12])) {

        $result = [$data[0],$data[13]];

    } else {

        $result = [$data[0],$data[12]];

    }

    fputcsv($f_out, $result, ',', '"');

p.s. 如果你计算错了自己,实际上不想检查原始项目的第一列索引,并从$result数组中删除$data[0]。


你也可以这样写,并花哨:)


while ($data = fgetcsv($f_in, 8000, "|")) {


    $result = empty($data[12]) ? [$data[0],$data[13]] : [$data[0],$data[12]]; 


    fputcsv($f_out, $result, ',', '"');


查看完整回答
反对 回复 2022-09-30
  • 1 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信