2013-06-26 56 views
0

我正在尝试创建日记型应用程序。因为我希望按日期排序,所以我把我拉的日期作为关键字,然后把文本作为数组中的值。我想要做的只是显示一次日期,即使有两个匹配的键。如何仅在未显示数组密钥时才显示数组密钥

所以在下面的例子中,将理想的回报:

1/2/2013 
    entry 1 
    entry 2 

1/5/2013 
    this is another day 

从此输入:

$array = array('1/2/2013'=>'entry 1', '1/2/2013'=>'entry 2', 
'1/5/2013'=>'this is another day'); 

    //loop through array and echo the date and value, but only echo date if havent already 

回答

0

该数组结构是不可能的,因为PHP数组键是唯一的。分配变量后,您会注意到数组只有两个元素,而不是三个,因为第二个条目会覆盖第一个元素。

如果你可以先点按日期的条目,考虑是这样的:

<?php 

$posts = array(
    array('date' => '1/2/2013', 'title' =>'entry 1'), 
    array('date' => '1/2/2013', 'title' =>'entry 2'), 
    array('date' => '1/5/2013', 'title' =>'entry 3'), 
); 

$date = ''; 
foreach ($posts as $p) { 
    if ($date != $p['date']) { 
     echo 'Date: ' . $p['date'] . "<br/>"; 
     $date = $p['date']; 
    } 
    echo 'Title: ' . $p['title'] . "<br/>"; 
} 
0

据我所知键必须是唯一的标识符,但是你可以以此为关键字创建并创建一个新阵列,以便您可以拥有多个数据即

Array 
0 
Date1 => string 
1 
Date2 => array("string 1","string2") 
0

通过创建多维数组,您可以在同一天允许多个事件。如:

$events = array(
    '01/01/2010' => array(
    'event1', 'event2' 
), 
    '02/02/2011' => array(
    'event3', 'event5' 
) 
); 

在这之后,你应该能够循环数组为每个事件结束:

foreach($events as $date => $data) { 
    echo $date .' - '. implode(',', $data); 
} 
+0

他可以改变输入吗? – zod

+0

@zod - 也许是一个问题,尽管引用:“我把日期,拉作为关键,然后文本作为数组中的值'听起来像它可以 – AlexP