亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果語句在前一個 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 關注
  • 90 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號