通过部分匹配对php中的数组值进行分组
我有这样一个数组:通过部分匹配对php中的数组值进行分组,php,arrays,preg-match,grouping,preg-match-all,Php,Arrays,Preg Match,Grouping,Preg Match All,我有这样一个数组: Array ( [0] => Saturday 19th January 2013 07:59:57 PM [1] => Sunday 20th January 2013 07:00:26 PM [2] => Monday 21st January 2013 02:08:15 PM [3] => Monday 21st January 2013 02:11:00 PM [4] => Monday 21st
Array
(
[0] => Saturday 19th January 2013 07:59:57 PM
[1] => Sunday 20th January 2013 07:00:26 PM
[2] => Monday 21st January 2013 02:08:15 PM
[3] => Monday 21st January 2013 02:11:00 PM
[4] => Monday 21st January 2013 02:41:02 PM
[5] => Monday 21st January 2013 02:42:14 PM
[6] => Monday 21st January 2013 03:03:34 PM
[7] => Monday 21st January 2013 03:07:39 PM
[8] => Monday 21st January 2013 03:37:11 PM
[9] => Monday 21st January 2013 03:37:52 PM
[10] => Monday 21st January 2013 04:14:08 PM
[11] => Monday 21st January 2013 04:16:38 PM
[12] => Monday 21st January 2013 04:19:18 PM
[13] => Monday 21st January 2013 05:45:17 PM
[14] => Monday 21st January 2013 06:39:04 PM
[15] => Monday 21st January 2013 08:01:56 PM
[16] => Monday 21st January 2013 08:03:23 PM
[17] => Monday 21st January 2013 08:12:15 PM
[18] => Monday 21st January 2013 08:15:20 PM
[19] => Monday 21st January 2013 08:29:57 PM
[20] => Monday 21st January 2013 09:57:25 PM
[21] => Tuesday 22nd January 2013 01:57:59 AM
[22] => Tuesday 22nd January 2013 06:39:34 AM
[23] => Tuesday 22nd January 2013 11:38:25 AM
[24] => Tuesday 22nd January 2013 03:21:08 PM
[25] => Tuesday 22nd January 2013 04:09:36 PM
}
我希望将此阵列分组,以便获得:
Array
(
[Saturday 19th January 2013 07:59:57 PM] => 1
[Sunday 20th January 2013 07:00:26 PM] => 1
[Monday 21st January 2013 02:08:15 PM] => 19
[Tuesday 22nd January 2013 01:57:59 AM] => 5
}
这里的关键应该是匹配20-23个字符的前一个数组中的匹配值,该值是前一个数组中匹配值的计数,我一直在仔细研究这个问题。
如有任何帮助,我将不胜感激 这是可行的(尽管新阵列不能保持时间,这可能更可取):
如果您想知道时间,请使用以下命令:
foreach ($array as $date)
{
$name = date('l jS F Y', strtotime($date));
$time = substr($date, -11);
if (!isset($times[$name]))
{
$newArray[$name . ' ' . $times[$name] = $time] = 1;
}
else
{
++$newArray[$name . ' ' . $times[$name]];
}
}
这个问题没有显示出任何研究成果。做家庭作业很重要。告诉我们你发现了什么,为什么它不能满足你的需要。这表明你花了时间来帮助自己,这使我们不必重复显而易见的答案,而且最重要的是,这有助于你得到更具体、更相关的答案。
foreach ($array as $date)
{
$name = date('l jS F Y', strtotime($date));
$time = substr($date, -11);
if (!isset($times[$name]))
{
$newArray[$name . ' ' . $times[$name] = $time] = 1;
}
else
{
++$newArray[$name . ' ' . $times[$name]];
}
}