如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。

2020年7月31日

PHP二維key-value陣列根據特定欄位內容去除重複資料

作者: Fred F.M. Wang (FW知識瑣記) 日期: 2020-7-31

PHP一維陣列要移除重複的內容,很簡單只要使用array_unique函式即可

例如 :

$input = array("green", "red", "green", "blue", "red");

$result = array_unique($input);

結果$result內容為array( "green", "red", "blue");


二維的key-value陣列要根據特定欄位內容移除重複,要如何處理?


下面是多維(key-value)陣列 :  

items[0][“fieldname1”] = …;

items[0][“fieldname2”] = …;

items[0][“fieldname3”] = …;

items[0][“fieldname4”] = …;

items[0][“fieldnamen”] = …;


items[1][“fieldname1”] = …;

items[1][“fieldname2”] = …;

items[1][“fieldname3”] = …;

items[1][“fieldname4”] = …;

items[1][“fieldnamen”] = …;

….


要去除上面陣列 fieldname1, fieldname2, fieldname3欄位內容相同的item, 程式如下 :  


$new_items = array();

$keys = array();

if(!empty($items)) {

    foreach($items as $key => $rec) {

       $reckey = array($rec["fieldname1"],$rec["fieldname2"],$rec["fieldname3"]);

       if(!in_array($reckey,$keys)) {

           $keys[] = $reckey;

           $new_items[] = $rec;    

       }        

    }    

}

$items = $new_items;

2020年7月20日

PHP程式解決記憶體不足的錯誤 "Allowed memory size of ... bytes exhausted"

作者: Fred F.M. Wang (FW知識瑣記) 日期: 2020/7/20

PHP程式執行時發生下面錯誤
Fatal error: Allowed memory size of ... bytes exhausted (tried to allocate ... bytes) in  ….
表示是可用記憶體已耗盡。
可透過兩種方法解決 :
1、修改php.ini
例如 : memory_limit = 128
這種方法需要重啟web服務器。

2、在程式中使用ini_set函數修改設訂選項值
例如 : ini_set ('memory_limit', '128M')

如果一直加大記已體還解決不了問題,那麼可能程式中發生幾種無限耗用資源的情況
1 無窮的迴圈 : 迴圈中持續分配記憶體,例如增加陣列大小
2 無窮的遞迴程式 : 遞迴程式沒有寫好結束的條件。

3 使用了過大的陣列或過多的變數 (註 : 程式中不再用到陣列或變數,可使用unset()或$var = null釋放記憶)

好好檢查程式吧!

2020年7月2日

各大學人工智慧,機器人相關系所與學分學程 (包含大學,科大,研究所等)

作者: Fred F.M. Wang (FW知識瑣記) 日期:2019-09-30 最近修訂:2023-3-20

研究所博士班
 
 
研究所碩士班(一般生) 


研究所碩士班(在職進修)


大學
 
科技大學

學分學程

相關文章