Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将foreach包装成div_Php_Html - Fatal编程技术网

Php 将foreach包装成div

Php 将foreach包装成div,php,html,Php,Html,我有这个功能工作得很好 <?php $categories = get_categories(array( 'hide_empty' => 0, 'taxonomy' => 'category', 'orderby' => 'title', 'order' => 'ASC' )); foreach ($categories as $category) { $first

我有这个功能工作得很好

<?php
$categories = get_categories(array(
    'hide_empty'      => 0,
    'taxonomy'        => 'category',
    'orderby'         => 'title',
    'order'           => 'ASC'
));
foreach ($categories as $category) {
    $firstletter = strtoupper(substr($category->name,0,1));
    $link = get_category_link( $category->term_id );
    if ($firstletter != $current) {
        $postlist .= "<b><a name='$firstletter'> $firstletter </a></b><br>\n";
        $nav .= "<a href='#$firstletter'> $firstletter </a> ";
        $current = $firstletter;
    }
    $postlist .= "<a href='$link'>" . $category->cat_name . "</a><br>\n";
}

print $nav . "<br>" . $postlist;
?>

我需要的是,从字母开始,把整个清单包装起来。例如,字母M将被包装在一个div中,所有类别都以M开头


这就是我目前得到的:-任何帮助都将不胜感激,谢谢。

您似乎走在正确的道路上。我认为这就是你要求做的:

$closeLastDiv = false;
foreach ($categories as $category) {
    $firstletter = strtoupper(substr($category->name,0,1));
    $link = get_category_link( $category->term_id );
    if ($firstletter != $current) {
        if ($firstletter == ""){ //first time through
            $postlist .= "<div>";
            $closeLastDiv = true;
        } else {
            $postlist .= "</div><div>";
        }
        $postlist .= "<b><a name='$firstletter'> $firstletter </a></b><br>\n";
        $nav .= "<a href='#$firstletter'> $firstletter </a> ";
        $current = $firstletter;
    }
    $postlist .= "<a href='$link'>" . $category->cat_name . "</a><br>\n";
}

if ($closeLastDiv) {
    $postlist .= "</div>";
}
$closeLastDiv=false;
foreach($categories作为$category){
$firstletter=strtoupper(substr($category->name,0,1));
$link=get\u category\u link($category->term\u id);
如果($firstletter!=$current){
如果($firstletter==“”){//第一次通过
$postlist.=”;
$closeLastDiv=true;
}否则{
$postlist.=”;
}
$postlist.=”;
$current=$firstletter;
}
$postlist.=“
\n”; } 如果($closeLastDiv){ $postlist.=”; }
您只需将当前信函与之前的信函进行比较,如果更改,则打印起始包装+内容。当信件更改时,关闭包装并打开下一个包装器

大概是这样的:

$current = "-";
$postlist .= "<div>";

foreach ($categories as $category) {
    $firstletter = strtoupper(substr($category->name,0,1));
    $link = get_category_link( $category->term_id );
    if ($firstletter != $current) {
        $postlist .= "</div><div id='{$firstletter}'>";
        $postlist .= "<b><a name='{$firstletter}'>".$firstletter."</a></b><br>\n";
        $nav .= "<a href='#{$firstletter}'>".$firstletter."</a> ";
        $current = $firstletter;
    }
    $postlist .= "<a href='$link'>" . $category->cat_name . "</a><br>";
}
$postlist .= "</div>";
$current=“-”;
$postlist.=”;
foreach($categories作为$category){
$firstletter=strtoupper(substr($category->name,0,1));
$link=get\u category\u link($category->term\u id);
如果($firstletter!=$current){
$postlist.=”;
$postlist.=”;
$current=$firstletter;
}
$postlist.=“
”; } $postlist.=”;

第一个div仍然为空,但所有其他div都正常。

$firstletter看起来像是从不接受值“谢谢,这也行。但是,它在列表顶部创建了一个空的。屏幕:这是一个使用的例子。您可以使用这个空div来放置标题或其他内容。或者,如果您想要更清晰的aproach,您需要在if语句中反转条件,并确保foreach的最后一个循环关闭de div包装器。