Re: [請益] function的回傳值遇上問題

看板PHP作者 (寶貝豬)時間16年前 (2009/10/19 22:28), 編輯推噓7(7028)
留言35則, 2人參與, 最新討論串2/4 (看更多)
會不會跟PHP官網上關於print_r的說明有關? (略) Remember that print_r() will move the array pointer to the end. Use reset() to bring it back to beginning. (略) 所以你在函式內print_r array變數 後, 應該要reset, 然後再回傳. ※ 引述《Peruheru (還在想)》之銘言: : 是這樣的 (略) : 原來程式碼是 : $results = funA(....); (中間省略不打,有好幾個參數) : print_r($results); : echo '.<br />'; : '---[2]---'的下面第一行是function內的print_r : 'get : '後的則是收到回傳值以後印的print_r : 所以第一次會看到'get : '後面接著回傳結果,然後是小數點'.'之後換行 : 第二次'get : '後面卻直接接上 '.' : 所以我也不知道這算是什麼東西 : ※好像也只能提供函式了 http://radiantgarden.myweb.hinet.net/tFunc.zip -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.115.151.184 ※ 編輯: bobju 來自: 58.115.151.184 (10/19 22:29)

10/19 22:30, , 1F
不,那個,原本是沒有print_r的,是因為發現收不到才加的
10/19 22:30, 1F

10/19 22:30, , 2F
我剛回來不小心按掉了
10/19 22:30, 2F

10/19 22:34, , 3F
我有看過你的程式碼,不過裏面少了explodeTime的定義,run不動
10/19 22:34, 3F

10/19 22:36, , 4F
;另外,我懷疑可能是在$suceeArray=array(mktime(...),...)時
10/19 22:36, 4F

10/19 22:37, , 5F
mktime的參數內容有錯, 如此一來mktime會回傳false,最後整個
10/19 22:37, 5F

10/19 22:37, , 6F
就是個空陣列.
10/19 22:37, 6F

10/19 22:39, , 7F
其實,這函式裏面用到蠻多變數的,或許某些狀況是因此而起的.
10/19 22:39, 7F

10/19 22:40, , 8F
我想我已經排除那個問題,上一篇內容我有補上函式內外
10/19 22:40, 8F

10/19 22:40, , 9F
分別印出要回傳的值,和已回傳的值做對照
10/19 22:40, 9F

10/19 22:41, , 10F
回傳前印出的結果是正確的,回傳後卻只剩下false
10/19 22:41, 10F

10/19 22:41, , 11F
而且第一次是完全正確,第二次才出問題
10/19 22:41, 11F

10/19 22:42, , 12F
explodeTime就只是單純把"0,0,0,12,5,2009"這種東西拆成
10/19 22:42, 12F

10/19 22:43, , 13F
六個當成數字使用而已
10/19 22:43, 13F

10/19 22:44, , 14F
看上篇可以知道,其實函式已經做出正確結果了,就差送不
10/19 22:44, 14F

10/19 22:44, , 15F
回來而已,所以這問題才顯得奇怪
10/19 22:44, 15F

10/19 22:47, , 16F
我說的排除問題是只我排除mktime格式錯誤的可能
10/19 22:47, 16F

10/19 22:48, , 17F
而不是我問得這個問題,這問題目前還是不知道該怎麼辦
10/19 22:48, 17F

10/19 22:49, , 18F
我再幫忙想一想..
10/19 22:49, 18F

10/19 22:59, , 19F
原函式 chkTimeLimit 的程式碼當中, 在do while迴圈裏,
10/19 22:59, 19F

10/19 23:00, , 20F
有個 return false;的條件式. 有沒有可能在給定不同的測試設
10/19 23:00, 20F

10/19 23:00, , 21F
定值的情況下, 觸發了回傳 false 的條件? 這樣就可以合理解
10/19 23:00, 21F

10/19 23:01, , 22F
釋.
10/19 23:01, 22F

10/19 23:02, , 23F
可是print_r是寫在迴圈外的return之前耶,如果直接return
10/19 23:02, 23F

10/19 23:02, , 24F
就不會印了的說XD
10/19 23:02, 24F

10/19 23:06, , 25F
把那行註解掉好了,我想應該沒差,那行是擔心開始時間設
10/19 23:06, 25F

10/19 23:07, , 26F
得比結束時間還要早,就變得不合理了才加上得
10/19 23:07, 26F

10/19 23:08, , 27F
不過我真的忘了有那行了.....
10/19 23:08, 27F

10/19 23:09, , 28F
還敢大言不慚的說裡面沒有return false的敘述...
10/19 23:09, 28F

10/19 23:17, , 29F
嗯..一時想不出其它的可能性. 不過我還是覺得問題可能是出在
10/19 23:17, 29F

10/19 23:18, , 30F
程式的邏輯以及資料處理的正確性上面. 只是要run了,step by
10/19 23:18, 30F

10/19 23:19, , 31F
step trace 才能發現.
10/19 23:19, 31F

10/19 23:21, , 32F
講顛倒了,怕開始時間設的比結束時間還要晚
10/19 23:21, 32F

10/19 23:23, , 33F
如果PHP能逐步執行就好了...
10/19 23:23, 33F

10/19 23:23, , 34F
謝謝,辛苦你了
10/19 23:23, 34F

10/19 23:27, , 35F
或許會有人找到原因.我要先走一步了. XD
10/19 23:27, 35F
文章代碼(AID): #1At7UCVv (PHP)
文章代碼(AID): #1At7UCVv (PHP)