[英]How to pull out data from nested array in PHP?
这是从这里开始的后续问题。 但是问题就不同了。
我有以下数组输出。
Array $events
Array
(
[0] => Array
(
[day] => 17
[eventContent] => event 1 of 17th
[eventTitle] => 17th event 1
)
[1] => Array
(
[day] => 19
[eventContent] => event 1 of 19th
[eventTitle] => 19th event 1
)
[2] => Array
(
[day] => 05
[eventContent] => event 1 of 5th
[eventTitle] => 5th event 1
)
[3] => Array
(
[day] => 17
[eventContent] => event 2 of 17th
[eventTitle] => 17th event 2
)
[4] => Array
(
[day] => 19
[eventContent] => event 2 of 19th
[eventTitle] => 19th event 2
)
[5] => Array
(
[day] => 19
[eventContent] => event 3 of 19th
[eventTitle] => 19th event 3
)
)
我想退出日。
如果我使用它,它将拾取1,2,3等。但是我想要17,19等。
if(array_key_exists($day,$events)){...
有人能告诉我该怎么做吗?
提前致谢。
-更新-
我需要修改的原始视图。
if(array_key_exists($day,$events))
{
//adding the date_has_event class to the <td> and close it
echo ' class="date_has_event"> '.$day;
//adding the eventTitle and eventContent wrapped inside <span> & <li> to <ul>
echo '<div class="events"><ul>';?>
<?php foreach ($events as $event) : ?>
<li>
<span class="title"><?php echo $event['eventTitle']; ?></span>
<span class="desc"><?php echo $event['eventContent']; ?></span>
</li>
<?php endforeach; ?>
<?php
echo '</ul></div>';
}
尝试这个:
$eventsByDay = array();
foreach ($events as $key => $event) {
if (!isset($eventsByDay[$event['day']])) {
$eventsByDay[$event['day']] = array();
}
$eventsByDay[$event['day']][] = $event;
}
$eventsByDay
现在是一个数组,其中的键是日期,值是相应事件的数组。
foreach ($events as $event) {
echo $event['day'];
}
或获得特定的一天:
echo $events[0]['day'];
问题是您想做的帽子..一些不同的方法:
对于eaxmple,只需使用foreach进行打印即可:
foreach($array as $element) {
echo $element['day']."\n";
}
或使用array_map创建一个包含这些值的新数组:
function map_func($dat) {
return $dat['day'];
}
$days = array_map('map_func', $array);
$events = array(...);
$days = array();
foreach($events as $event) {
$day = $event['day'];
$count = isset($days[$day]) ? $days[$day]++ : 1;
$days[$day] = $count;
}
print_r($days);
上面的代码创建一个新数组:[day] =>事件计数
<?php
class Event{
protected $day;
protected $eventContent;
protected $eventTitle;
public function __construct($day,$eventContent,$eventTitle){
$this->day=$day;
$this->eventContent=$eventContent;
$this->eventTitle=$eventTitle;
}
public function getDay(){
return $this->day;
}
}
class EventContainer{
protected $container=array();
public function add(Event $NewEvent){
$this->container[$NewEvent->getDay]=$NewEvent;
return $this;
}
/**
* You can make this one as comples as you want, and even add later a more complex index
*/
public function search($day){
return (isset($this->container[$day]))?$this->container[$day]:null;
}
}
//IN THE BL CODE!
$Cont=new EventContainer;
$Conat->add(new Event(12,'aaa','bbb')
->add(new Event(18,'ccc','xxx')
->add(new Event(22,'fg','xerwrxx');
var_dump($Cont->search(18));
如果您使用> php 5,请尝试此操作
$iterator = new RecursiveArrayIterator($array);
for($i=0;$<count($iterator);$i++)
{
// code here or
echo $iterator[$i]["day"];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.