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 
4

4 回答 4

0

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

Array
0
Date1 => string
1
Date2 => array("string 1","string2")
于 2013-06-26T23:58:22.443 回答
0

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

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

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

foreach($events as $date => $data) {
  echo $date .' - '. implode(',', $data);
}
于 2013-06-27T00:00:14.003 回答
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/>";
}
于 2013-06-27T00:03:56.750 回答
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

于 2013-06-27T00:05:03.560 回答