道歉,如果這是一個重複的問題,我不熟悉我正在嘗試實現的確切術語,因此我一直未能成功搜索答案。我對這些東西非常青睞,以下是通過反覆試驗得出的結論 - 不是因爲我有任何幻想,認爲它是正確的。搜索PHP陣列的所有級別
這裏就是我想要實現:
- 使用textarea的,客戶輸入定製的開放時間(每行一個):天(名稱),日期,狀態(開或關),開標時間, 關閉時間。例如:「聖誕節,2016-12-25,關閉」或「節禮日,2016-12-26,開放,8:00,17:00」。
- 這個textarea內容被新行分割成一個數組,然後再用逗號分割。
- 使用這些數組,搜索日期是否爲今天的日期,如果是,則顯示數組中更多的內容(如該特定日子的開放時間),或者 - 如果沒有匹配,則顯示正常開放時間設置在別處)。
到目前爲止我有什麼(請注意,我已經獲取的$ custom_dates變量的內容):
$array = array();
$array = preg_split('/\R/', $custom_dates); /* split by line break */
foreach($array as $key => $custom_dates) {
$array[$key] = explode(',', $custom_dates); /* split again by comma */
};
這將返回以下陣列(也可以更長取決於短客戶的需求):
Array
(
[0] => Array
(
[0] => Christmas Day
[1] => 2016-12-25
[2] => closed
)
[1] => Array
(
[0] => Boxing Day
[1] => 2016-12-26
[2] => open
[3] => 8:00
[4] => 17:00
)
)
我在努力的是如何搜索所有數組中的特定日期匹配。如果我使用if($ array [$ key] [1] == $ date)(其中$ date已根據我的時區設置爲當天日期),那麼它只搜索最後一個數組,節禮日信息。所以如果$日期是2016-12-26,那麼一切都很好,它會繼續並顯示節禮日的開放時間。
但是,如果今天的$ date是2016-12-25那麼即使有特定於此日期的信息也不會發生,因爲我的if語句中的$ key僅檢查「節禮日」數組信息。這意味着繼續檢查其餘部分(無論是開放的還是封閉的等)是多餘的,因爲它甚至沒有獲得正確的日期。
我的(囉嗦)問題是:爲了搜索所有數組級別以找到匹配的最後一個[1],我可以用什麼來代替$ array [$ key] [1]?還是我從完全錯誤的角度來看它?
請幫助我,如果可以的話,我拉我的頭髮,因爲我不知道正確的術語來搜索。如果您需要,歡迎提供更多細節。
預先感謝您。
嘗試使用'for'或'foreach'循環 – Nehal
@tms,如果答案適合您,請接受它。如果沒有,請添加評論關於還有什麼可能是一個因素或考慮 – paulski