簡體   English   中英

函數輸出混亂

[英]Confusing Function Output

我對以下功能的結果感到非常困惑。 我知道這只是一小段代碼,但我認為有足夠的信息可以理解應該發生的情況:

while ($k < $dateCount) {
        echo $k." ==> ".$forecastData[$k]['Booked Date']." ==> ".$startDate."<br>";
        if($forecastData[$k]['Booked Date'] == $startDate){
            echo $k." ==> YAY<br>";
        }
        else{
            echo $k." ==> boo ==> ".$startDate."<br>";
        }
        $k++;
        $startDate = date('Y-m-d', strtotime("+1 day", strtotime($startDate)));
    }

$ k是數組鍵->從0開始;

$ dateCount是數組的大小(要在31天或此范圍長的范圍內停止)

$ forecastData是日期中所有銷售數據的多維數組。 –包含該日期的信息負載,包括預訂日期,該日期是信息存儲的日期。

$ startDate是已輸入但已轉換為去年同一天的日期–在這種情況下,輸入的日期為2016年10月1日,轉換后的日期為2015年9月26日

我想說的是,如果日期相等,則用單詞YAY回顯數組的編號,否則用單詞boo回顯數組的編號。

每個循環的k與日期一樣增加1。

我還打印了循環的初始值,以顯示比較結果。

我無法理解的是這是輸出:

0 ==> 2015-09-26 ==> 2015-09-26

0 ==>噓==> 2015-09-26

1 ==> 2015-09-27 ==> 2015-09-27

1 ==>可以

2 ==> 2015-09-28 ==> 2015-09-28

2 ==>可以

3 ==> 2015-09-29 ==> 2015-09-29

3 ==>可以

4 ==> 2015-09-30 ==> 2015-09-30

4 ==>可以

5 ==> 2015-10-01 ==> 2015-10-01

5 ==>可以

6 ==> 2015-10-02 ==> 2015-10-02

6 ==>可以

7 ==> 2015-10-03 ==> 2015-10-03

7 ==>可以

8 ==> 2015-10-04 ==> 2015-10-04

8 ==>可以

9 ==> 2015-10-05 ==> 2015-10-05

9 ==>可以

10 ==> 2015-10-06 ==> 2015-10-06

10 ==>可以

11 ==> 2015-10-07 ==> 2015-10-07

11 ==>可以

第一個對我沒有意義?? 它確實等於應有的值,但是由於某些原因而跳過了它? 另外,如果我對日期進行硬編碼,它將可以正常工作。

我一直在努力了解這一點,以至於任何想法都會有所幫助

謝謝

從您的輸出中,我看到突出顯示2015-09-26也會選擇尾部空白,而突出顯示2015-09-27沒有尾部空間。

所以這意味着2015-09-26 != 2015-09-26_ 使用trim($startDate)或僅檢查此尾隨空白的位置。

另外,在調試時最好使用var_dump($startDate); => string(11) "2015-09-26 " var_dump($startDate); => string(11) "2015-09-26 " 這樣,您還將看到字符串長度。


從個人經驗
正在將hellohello比較失敗。 原來是var_dump($var); 顯示hello length為10。進一步的調查顯示,它是\\0h\\0e\\0l\\0l\\0o

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM