私はリクルートルーピングに問題があります。私はdbテーブルsite_pages
を持っています。私はウェブページ(CMS)を保存しています。そのページは親テーブルを持つことができます。テーブルにはparent_id
があります。php recursive looping not repeater divider
一般的に、これらの格納式でこの効果を達成したいと考えています。 1人の子供
|—|—
を持っている場合は2人の子供
|—|—|—
3人の子供...上記
を持っている場合
|—
場合は、rootである私が欲しいもの効果です。しかし、私の場合、私はこの効果を得る。ページタイトルの前に2つの仕切りが繰り返されることはありません。ここで
は私の配列が何であるかを私ループ:Array
(
[0] => Array
(
[id] => 1
[title] => Home
)
[1] => Array
(
[id] => 2
[title] => About us
[children] => Array
(
[0] => Array
(
[id] => 5
[title] => Subpage #1
[children] => Array
(
[0] => Array
(
[id] => 6
[title] => Subpage #2
)
)
)
)
)
コードはどこでループpages
配列:ここ
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>Page name</th>
<th>Status</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php if($pages): ?>
<?php foreach ($pages as $index => $page): ?>
<tr>
<td><span class="gi">|—</span><?= $page['title'];?></td>
<td><?= $page['status'];?></td>
<td>N/A</td>
</tr>
<?php if(!empty($page['children'])): ?>
<?= fetchChilds($page['children']); ?>
<?php endif;?>
<?php endforeach; ?>
<?php endif; ?>
</tbody>
</table>
と子がループしているヘルパー関数:
function fetchChilds($pages) {
$html = "<tr>";
foreach ($pages as $child) {
$html .= '<td> <span class="gi">|—</span>'. $child["title"] .'</td>';
$html .= '<td>'. $child["status"] .'</td>';
$html .= '<td> N/A</td>';
if(isset($child['children'])) {
$html .= fetchChilds($child['children']);
}
}
$html .= "</tr>";
return $html;
}
この作業には1人の子供がいれば完璧です。もし私が2人の子供を持っていたり、それ以上のものがあれば、 '
あなたの権利が追加されます。私はfetchChild関数に変更しました。
関連する問題