如何仅在尚未显示数组键时显示它

时间:2013-06-26 23:54:05

标签: php arrays foreach key

我正在尝试制作日记帐类型的应用程序。因为我希望它按日期排序,所以我把我拉的日期作为键,然后将文本作为数组中的值。我想要做的只是显示一次日期,即使有两个匹配的键。

所以在下面的例子中,理想情况下会返回:

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 

4 个答案:

答案 0 :(得分:0)

据我所知,密钥必须是唯一标识符,但您可以取消设置并创建一个新数组,并将其作为密钥,以便您可以拥有多个数据,即

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

答案 1 :(得分:0)

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

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

在此之后,您应该能够为每个事件循环遍历数组:

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

答案 2 :(得分: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/>";
}

答案 3 :(得分:0)

使用

array_key_exists

http://php.net/manual/en/function.array-key-exists.php

或使用两个循环并使用array_unique

http://php.net/manual/en/function.array-unique.php