使用expressionengine,我有两个这样的循环:
{exp:channel:entries ........} <--- CMS Loop starts --->
$data ="{event_day}.{event_month}.{event_year }"; // will output 19.21.2013
$titlu = htmlentities("{title}"); // string
$link = "{adresa_externa}"; // website
$arrContent3[strtotime($data)] = substr($data, 0, 5)." - ". "<a href='$link'> " . $titlu ." </a>";
{/exp:channel:entries} <--- cms loops ends --- >
数组之后有以下代码:
<---- outputing in chronological order based on day year month --->
<?php
ksort($arrContent3) ;
echo html_entity_decode(implode("</li><li>", $arrContent));
?>
问题是,如果有两件事的日期完全相同。只有一个会出现在列表中。
我不知道为什么:
对于您现有的代码,最简单的方法是在循环之前设置$i = 0;
,然后:
$arrContent3[strtotime($data).$i++] = substr($data, 0, 5)." - ". "<a href='$link'> " . $titlu ." </a>";
虽然我不知道你是如何从$arrContent3
到$arrContent
的
问题是,当您设置一个数组条目$arrContent[strtotime($data)]并且您已经有一个相同值的$data条目时,第二个条目会覆盖第一个条目。
所以不是给$arrContent[strtotime($data)]赋标量值,而是赋一个数组元素,
$arrContent[strtotime($data)][] = expression;
按照相同的方式执行ksort(),以按日期顺序获取它们,但然后循环遍历数组叶子以创建一维数组,
foreach($arrContent as $arrDateContent) {
foreach($arrDateContent as $content) {
$arrContentAll[] = $content;
}
}
你可以做回显,
echo html_entity_decode(implode("</li><li>", $arrContentAll));
编辑:因此代码(来自原始问题)变成:
{exp:channel:entries ........} <--- CMS Loop starts --->
$data ="{event_day}.{event_month}.{event_year }"; // will output 19.21.2013
$titlu = htmlentities("{title}"); // string
$link = "{adresa_externa}"; // website
$arrContent3[strtotime($data)][] = substr($data, 0, 5)." - ". "<a href='$link'> " . $titlu ." </a>";
{/exp:channel:entries} <--- cms loops ends --- >
第二部分
<---- outputing in chronological order based on day year month --->
<?php
ksort($arrContent3) ;
foreach($arrContent3 as $arrDateContent) {
foreach($arrDateContent as $content) {
$arrContentAll[] = $content;
}
}
echo html_entity_decode(implode("</li><li>", $arrContentAll));
?>