道歉,如果这是一个重复的问题,我不熟悉我试图实现的确切术语,因此到目前为止我找不到答案。我对这些东西非常环保,以下是通过反复试验产生的 - 而不是因为我对任何幻想都是正确的。
这是我想要实现的目标:
我到目前为止所做的事情(请注意,我已经检索了$ 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已设置为今天基于我的时区的日期),那么它只会搜索最后一个数组,在这种情况下是节礼日信息。因此,如果$ date是2016-12-26,那么一切都很棒,它会继续显示节礼日开放时间。
但如果今天的$ date是2016-12-25那么 - 即使有特定于此日期的信息 - 没有任何反应,因为我的if语句中的$ key仅检查节礼日数组信息。这意味着继续检查其余部分(无论是开放还是关闭等)是多余的,因为它甚至没有使日期正确。
我的(啰嗦)问题是:我可以使用什么代替$ array [$ key] [1]来搜索所有数组级别以找到最后一个匹配[1]?或者我是从完全错误的角度来看待它?
如果可以,请帮帮我,我拔头发因为我不知道正确的搜索条件。如果您需要,请尽快提供更多详细信息。
提前谢谢。
答案 0 :(得分:1)
您可以在已经创建的foreach循环中完成该任务。
$array = preg_split('/\R/', $custom_dates); /* split by line break */
foreach ($array as $key => $custom_date_string) {
$custom_date = explode(',', $custom_date_string);
if ($custom_date[1] === $today) {
// do stuff
}
$array[$key] = $custom_date; // if you still need this
}