我正在尝试让我的功能连续显示3个链接,然后开始一个新行并显示其他3个链接,依此类推,但我的代码无法正常工作 显示我的链接都错了。
当前输出。
<div>
<p>
<a href="">A</a>
</p>
<p>
<a href="">>A1</a>
</p>
<div>
<p>
<a href="">Glass & Mosaics</a>
</p>
</div>
<div>
<p>
<a href="">>Handcrafted & Finished Pieces</a>
</p>
</div>
</div>
<p>
<a href="">>Entrepreneurislism</a>
</p>
<p>
<a href="">>Photography</a>
</p>
</div>
</div>
<div>
<p>
<a href="">>Antiques</a>
</p>
<p>
<a href="">>Antiquities</a>
</p>
<p>
<a href="">>Architectural & Garden</a>
</p>
</div>
</div>
<div></div>
<div>
<p>
<a href="">>Cameras & Photo1</a>
</p>
</div>
</div>
</div>
<div></div>
</div>
输出应该是。
Link1 Link2 Link3
Link4 Link5 Link6
Link7
这是我的代码。
function make_list ($parent = 0, $parent_url = '', $ctr = 0) {
global $cat_link;
global $cat_id;
foreach ($parent as $id => $cat) {
if(!empty($cat['id'])) {
if($ctr%3 == 0) {
echo '<div>';
}
if(in_array($cat['id'], $cat_id)){
$url = $parent_url . $cat['url'];
echo '<p><a href="' . $url . '" title="' . $cat['category'] . ' Category Link" rel="Articles Category">' . $cat['category'] . '</a></p>';
}
$url = $parent_url . $cat['url'];
if(isset($cat_link[$id])) {
make_list($cat_link[$id], $url, $ctr+1);
}
if($ctr%3 == 0) {
echo '</div>';
}
}
}
if($ctr%3 != 0) {
echo '</div>';
}
}
$dbc = mysqli_query($mysqli,"SELECT * FROM categories ORDER BY parent_id, category ASC");
if(!$dbc) {
print mysqli_error($mysqli);
}
$cat_link = array();
while(list($id, $parent_id, $category, $url) = mysqli_fetch_array($dbc)) {
$cat_link[$parent_id][$id] = array('category' => $category, 'url' => $url, 'id' => $id);
}
make_list($cat_link[0], $url, $ctr);
答案 0 :(得分:1)
我认为你拍摄的内容是这样的:
function make_list($parent)
{
$link_count = 0;
foreach($parent as $id => $category)
{
if($link_count % 3 == 0) echo '<div>';
// display the link here
// call make_list here to display sub-categories in an inner <div>
if($link_count % 3 == 2) echo '</div>';
$link_count++;
}
}
答案 1 :(得分:0)
默认情况下<p>...</p>
和<div>...</div>
将始终为一个块(始终开始一个新行),因此您的代码会产生7行。
解决方法是简单使用span
代替<p>
或不使用任何内容。
希望这有帮助。
更新
function make_list ($parent = 0, $parent_url = '', $ctr = 0) {
global $cat_link;
global $cat_id;
$IDs = array_keys($parent);
$Count = count($IDs);
for ($i = 0; $i < $Count; $i++) {
echo '<div>';
for($c = 0; ($c < 3) && ($i < $Count); ) {
$ID = $IDs[$i++];
$CAT = $parent[$ID];
if(in_array($CAT['id'], $cat_id)) {
$URL = $parent_url . $CAT['url'];
$Category = $CAT['category'];
echo "<a href='$URL' title='$Category Category Link' rel='Articles Category'>$Category</a>";
$c++
}
$URL = $parent_url . $CAT['url'];
if(isset($cat_link[$id])) {
make_list($cat_link[$id], $URL, $ctr+1);
}
}
echo '</div>';
}
}
$dbc = mysqli_query($mysqli,"SELECT * FROM categories ORDER BY parent_id, category ASC");
if(!$dbc) {
print mysqli_error($mysqli);
}
$cat_link = array();
while(list($id, $parent_id, $category, $url) = mysqli_fetch_array($dbc)) {
$cat_link[$parent_id][$id] = array('category' => $category, 'url' => $url, 'id' => $id);
}
make_list($cat_link[0], $url, $ctr);
我只需添加两个嵌套循环:内部循环三次,外部循环所有元素。关键是每次内部一个循环,元素循环索引(i
)也会改变。
我们试一试,让我知道。