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

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

PHP用于參考想要的元素列表從多維數組中刪除不需要的元素

PHP用于參考想要的元素列表從多維數組中刪除不需要的元素

PHP
桃花長相依 2022-07-16 10:44:59
頂層的產品數組是$csv. 在下面的摘錄中,數字 [584],[585] 代表下一個數組級別$product=>$data_col如下所示: [584] => Array        (            [No_] => II14511            [Manufacturer ID] => CLT-M504S            [Description] => SAM CON CLT-M504S            [LQ Price] => 120.00000000000000000000            [Retail Price Incl_ GST] => 171.60000000000000000000            [AvailableQty] => 0.00000000000000000000            [Rocklea] => 0.00000000000000000000            [Sydney] =>            [Net Weight] => 0.50000000000000000000            [Item Category Code] => SAM            [Product Group Code] => CON            [Minor Category 1] => TONER            [Minor Category 2] => #            [Vendor Name] => Samsung            [Vendor URL] => www.samsung.com.au            [Item URL] =>            [Warranty] =>            [Dimension] =>            [EAN Barcode] => 8806085031999            [Description1] => Samsung CLT-M504S, SEE toner for CLP-415/ CLX-4195 Series LBP & MFP - Magenta Toner 1800 pages<br />            [Image] => https://auscompcomputers.com/uploads/image/SAM-CON-CLT-M504S.jpg        )    [585] => Array        (            [No_] => II14772            [Manufacturer ID] => DK-22205            [Description] => BRO CON LABELROLL-DK-22205            [LQ Price] => 25.00000000000000000000            [Retail Price Incl_ GST] => 35.75000000000000000000            [AvailableQty] => 0.00000000000000000000            [Rocklea] => 0.00000000000000000000            [Sydney] => 0.00000000000000000000            [Net Weight] => 0.50000000000000000000            [Item Category Code] => BRO            [Product Group Code] => CON            [Minor Category 1] => CON-LABEL-ROLL            [Minor Category 2] => #            [Vendor Name] => Brother        )因此,我有一個具有結構的數組$csv as $product as $data_col => $value但是,我想$data_col參考通緝列表選擇性地刪除一些數組$data_col,我將其稱為$wanted_data_cols.它似乎不會導致整個陣列發生變化。您能否建議如何進行這項工作,或者如果您覺得您有一個可以實現相同目標的卓越解決方案,我會接受。
查看完整描述

1 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

您現有代碼的問題在于,當您嘗試使用unset()該值時,您使用的是實際值而不是索引來刪除該項目 - 這是行不通的。


要修復原始代碼 -


foreach ($csv as $key => $product){

    foreach ($product as $column => $data_col){

        if(!in_array($column,$wanted_data_cols)){

            unset($csv[$key][$column]);

        }

    }

}

另一種方法是使用array_intersect_key(),這允許您只保留第二個數組中的鍵。但要做到這一點 - 您需要array_flip()在要保留的字段上使用,以便字段名稱最終成為鍵......


$wanted_data_cols = array_flip($wanted_data_cols);

foreach ($csv as $key => $product){

    $csv[$key] = array_intersect_key($product, $wanted_data_cols);

}

最后一個建議是,如果可能的話,這應該在加載數據時完成,這樣可以節省在內存中保存無用數據并消除進行第二次循環的需要。


查看完整回答
反對 回復 2022-07-16
  • 1 回答
  • 0 關注
  • 158 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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