2016-05-13 5 views
0

Я пытаюсь показать некоторые верхние и нижние колонтитулы номерам, массив содержит даты, и я хочу, чтобы они были отделены датой.PHP Array Foreach Tittle

Идеал будет объявлять только один заголовок и один нижний колонтитул.

Мне нужно сделать 2 foreach ?? или у кого есть какие-либо идеи ?, ТНХ

<?php 
$datos = array(
    array("date" => "2018"), 

    array("date" => "2016"), 
    array("date" => "2016"), 

    array("date" => "2015"), 
    array("date" => "2015"), 
    array("date" => "2015"), 
    array("date" => "2015"),  

    array("date" => "2014"), 
    array("date" => "2014"), 

    array("date" => "2005"), 
); 

echo "<pre>"; 
print_r($datos); 
echo "</pre>"; 

echo "HEADER TOP<br>"; 
foreach ($datos as $row) { 
    if ($datos['date'] != @$lezte_jahr){ 
    echo "FOOTER <br><br><br> HEADER "; 
    } 
    echo $row['date'] . " "; 
    $lezte_jahr = $row['date']; 
} 
echo "FOOTER TOP<br>"; 
?> 

я люблю результат, но я не знаю, как XD

--a-- 
2018 
--b-- 

--a-- 
2016 
2016 
--b-- 

--a-- 
2015 
2015 
2015 
2015 
--b-- 

--a-- 
2014 
2014 
--b-- 

--a-- 
2005 
--b-- 

ответ

2

Вы можете просто перебрать и хранить последнюю вторит дату и сравнить же с даты следующего в массиве.

<?php 
$datos = array 
    (
    array("date" => "2018"), 

    array("date" => "2016"), 
    array("date" => "2016"), 

    array("date" => "2015"), 
    array("date" => "2015"), 
    array("date" => "2015"), 
    array("date" => "2015"),  

    array("date" => "2014"), 
    array("date" => "2014"), 

    array("date" => "2005"), 
); 

foreach($datos as $key => $dt) { 
    if(isset($last) && $last != $dt['date']) 
     echo '--b--' . PHP_EOL . '--a--' . PHP_EOL; 
    if(!isset($last)) 
     echo '--a--'. PHP_EOL; 

    echo $dt['date']. PHP_EOL; 

    if($key == count($datos) -1) 
     echo '--b--'; 

    $last = $dt['date']; 
} 

Демо: https://eval.in/570468