私は2つの配列を持っています。1 つ目は、元のデータから直接取得したものです。各アイテムはタイムラインのポイントです。
print_r($items)
戻り値
Array
(
[0] => Array
(
[id] => 1173
[month] => January
[year] => 2013
[description] => This is a test
[link] => #
[image] => http://s3.amazonaws.com/stockpr-test-store/esph2/db/Timeline/1173/image_resized.jpg
)
[1] => Array
(
[id] => 1183
[month] => February
[year] => 2013
[description] => This is another test
[link] =>
)
[2] => Array
(
[id] => 1193
[month] => December
[year] => 2012
[description] => Testing another year
[link] => #
)
)
その配列からすべての一意の年を取得する 2 番目の配列があります。
print_r($years)
戻り値
Array
(
[0] => 2013
[2] => 2012
)
次に、年を経て、その年に一致するアイテムを年ごとに返すにはどうすればよいですか?
したがって、2012 年の場合、$items 配列から [2] を取得します。2013 年の場合、$items 配列から [0] と [1] を取得します。
私はこれですべて間違っていますか?私がやりたいのは、次のような出力を持つことだけです:
<h1>Timeline</h1>
<h2>2013</h2>
<ul>
<li>ID No. 1173</li>
<li>ID No. 1183</li>
</ul>
<h2>2012</h2>
<ul>
<li>ID No. 1193</li>
</ul>
編集:
現在使用中:
<? foreach($years as $year) : ?>
<div class="year row clearfix" id="y-$year">
<h3><span><?= $year ?></span></h3>
<? foreach($items as $item) : ?>
<? if($item['year'] == $year) : ?>
<div class="item span5">
<div class="padding">
<div class="text">
<h4><?= $item['month']?> <?= $item['year'] ?></h4>
<p><?= $item['description'] ?></p>
</div>
</div>
</div>
<? endif; ?>
<? endforeach; ?>
</div>
<? endforeach; ?>
しかし、それは少し効率が悪いようです。私が理解できることから、アイテムを出力しようとするたびに完全な配列を通過しています。