PHP函数创建div,称为x次

时间:2017-11-13 18:01:17

标签: php html

我正在尝试创建一个html元素,其中包含由x依赖于元素数div所包含的函数创建的x个其他$allposts

<div id="postings">
    <?php
    foreach($allposts as $key => $value){
        createPost($key, $value);
    }
    ?>
 </div>

上面这个html和php代码是我试图创建一个&#34;发布&#34;对于$allposts数组中找到的每个项目。

<?php
    function createPost($author, $input)
    {
        $data = [];
        $i = 0;
        foreach($input as $key => $value){
            $data[$i] = $value;
            $i++;
        }
        echo "<div>
                <span class='post-title'>$data[0]</span>
                <span class='post-author'>$author</span>
                <span class='post-date'>$data[1]</span>
                <p class='post-desc'>$data[2]</span>
            </div>";
     }
?>

这是包含函数createPost($author, $input)

的php文档

该函数有效,但似乎每次调用函数时,都会覆盖上一篇文章,只留下一个帖子,最后是数组中的最后一个。

2 个答案:

答案 0 :(得分:1)

<p class='post-desc'>$data[2]</span>;

没有正确的结束标记,可能会干扰格式化,导致在呈现给浏览器时丢失数据。你有一个html源的样本吗? 缩进确实有助于提高可读性。

<?php

function createPost($author, $input)
{
    $data = [];
    $i = 0;

    foreach($input as $key => $value) {
        $data[$i] = $value;
        $i++;
    }

    echo "<div>
            <span class='post-title'>$data[0]</span>
            <span class='post-author'>$author</span>
            <span class='post-date'>$data[1]</span>
            <p class='post-desc'>$data[2]</p>
          </div>";
}

?>

答案 1 :(得分:-1)

获取$data以外的foreach数组声明,另外需要做的更改是,不要使用$ i作为$ data数组的键,因为每次都会声明为0(所以,所有新值都取代了普通的值。因此,不要使用$i保留$data[],而是自动添加数字索引。

<?php
    $data = [];    // I took it out of the loop.
    function createPost($author, $input)
    {
        foreach($input as $key => $value){
        $data[] = $value;
    }
    echo "<div>
                <span class='post-title'>$data[0]</span>
                <span class='post-author'>$author</span>
                <span class='post-date'>$data[1]</span>
                <p class='post-desc'>$data[2]</span>
           </div>";
     }
?>