日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

这两天做项目出现的几个问题

發布時間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 这两天做项目出现的几个问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  今天老大剛到公司,過了以后就把我叫過去說:“客戶發郵件說,昨天做的那個訂單詳情導出功能,商品信息是累加的。。。。。。”。

  猜想,出現這個問題的原因可能是因為在循環里面沒有清空上次循環遺留下來的數據。

  查看了下源代碼,果然不出所料,就是因為用于存儲商品信息的字符串沒有在使用前先聲明為$pInfo = '',而是直接的$pInfo .= $product;(因為php的變量可以不聲明而直接使用的)。這就導致了,第二次循環的時候,$pInfo會接著上次的$pInfo拼接起來。

?

同理,還容易出現錯誤的就是:在循環中使用數組的時候。

比如,需要使用一個數組存儲信息,如果不事先把變量$arr聲明為空數組array(),而直接直接 $arr[] = $arrInfo,也會出現多余數組元素的問題。

所以,在使用循環的時候,以后就需要注意了。。。

?

為了避免上面的問題,最簡單有效的方式是:在使用一個變量之前先進行聲明并初始化。

?

?  其實,昨天在完成那個“訂單詳情導出”功能的時候 還出現了一個問題。

當管理員權限后臺所有的訂單(大約有4900多條記錄)執行導出操作的時候,生成的是xls文件只有表頭和一句話(原話忘記了,反正意思就是可用內存不足)。

原因是什么哪? 就是因為 我把 所有的訂單詳情信息都放在一個數組$list中,然后一次性寫入到xls文件中。問題出來了就要解決,總不能老是讓客戶20條20條的往外導數據吧??

  應該怎么解決?

  問題其實很簡單,既然不能把所有訂單詳情信息內容放在一個array中一次性的寫入文件,那么我們就一條記錄一條記錄的寫入文件。

  以前的實現方式為

  

1 function exportOrderDetail(){
2
3 ......
4
5   ......
6
7   ......
8
9   $list = array();//用于存放訂單詳情數據
10 ?
11   foreach($_POST['order_id'] as $order_id) {
12
13     $orderInfo = getOrderInfo($order_id);
14
15     $orderInfo['xx'] = getXXByOrder($order_id);
16
17     $orderInfo['yy'] = getYYByOrder($order_id);
18
19     $orderInfo['zz'] = getZZByOrder($order_id);
20
21     ...
22
23     ...
24
25     ...
26
27     $list[] = $orderInfo; //將訂單信息放入數組中
28 ?
29   }
30
31   exportXls($list);//往xls文件中寫入內容
32 ?
33   ......
34
35   ......
36
37   ......
38
39 }

  相信大家都已經看出問題所在了,如果訂單的數量足夠大的話,$list數組就會表的足夠的,從而導致內存不足的問題。

  問題已經找到了,那么應該怎么解決那?

  其實很簡單。直接將 31行的exportXls($list)放到foreach內部,同時,將原來foreach中的$list[] = $orderInfo 修改為$list = array($orderInfo); 即可。

?

上面是我這2天做項目的時候,因為沒注意出現的問題,今天貼上以此為戒。。。

?

?

?

轉載于:https://www.cnblogs.com/ainiaa/archive/2010/08/26/1808919.html

總結

以上是生活随笔為你收集整理的这两天做项目出现的几个问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。