曜日を表す5つのdivを動的に作成しようとしています。各divで、コードイグナイターモデルからフェッチされたデータをループし、プロジェクト、日付、およびそのプロジェクトに関連するタスクに基づいて、一連の順序付けされていないリストをエコーしようとしています。プロジェクトテーブルからデータをフェッチして、h4タグでプロジェクト名をエコーし、タスクテーブルから、プロジェクトh4の下で関連するタスクをエコーします。私が抱えている問題は、アルゴリズムがプロジェクト名と関連タスクを繰り返さないようにする方法が見つからないように見えることです。つまり、1つのプロジェクトに関連する2つのタスクがある場合、そのプロジェクトと2つの関連するタスクは2回エコーアウトされます。問題を説明するのに役立つ画像を次に示します。
<?php for($counter = 0; $counter < 5; $counter++): ?><!-- loops through and creates divs -->
<?php
$date = date("F j, Y");
$refDate = date("Y-m-d");
$counterForLi = 0;
?>
<div class="span2 check-list date-container">
<div id="form-to-date">
<div class="replace">
<h2 class="day"></h2>
<h4 class="thedate">
<?php
if ($counter > 0) {
$tomorrow = mktime(0, 0, 0, date("m"), date("d")+$counter, date("y"));
$refDate = date("Y-m-d", $tomorrow);
$date = date("F j, Y", $tomorrow);
echo $date;
} else {
echo $date;
}
?>
</h4>
<input type="hidden" name="thedate" class="hidden-date" value="<?php echo $refDate; ?>">
<?php if(isset($tasks)) : foreach($tasks as $taskRow) :?> <!-- loop through the tasks -->
<?php if($taskRow->dateadded == $refDate) : ?> <!-- in the context of the right date -->
<?php if(isset($taskRow->_project_fk)) : ?>
<?php
$relatedProjectId = $taskRow->_project_fk;
$relatedProjectName = NULL;
if(!isset($relatedProjectName)) {
foreach ($projects as $ProjectRow) {
if ($ProjectRow->__project_pk == $relatedProjectId) {
$relatedProjectName = $ProjectRow->project_name;
echo "<h4>" . $relatedProjectName . "</h4>";
echo "<ul>";
}
}
foreach ($tasks as $task) {
if ($task->_project_fk == $relatedProjectId && $task->dateadded == $refDate) {
echo "<li>".$task->task_name."</li>";
}
}
echo "</ul>";
}
?>
<?php endif; ?>
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?>
</ul>
</div><!-- /replace -->
</div><!-- /form-to-date -->
</div>
<?php endfor; ?>
このコードはちょっと混乱していると思いますので、説明が必要な場合はお問い合わせください。
編集:これが私のタスク配列の構造です