如何使用特定的html div标签循环数组

时间:2017-05-25 03:56:27

标签: php html foreach

我有一些像这样的数组:

array(6) { 
[0]=> object(stdClass)#22 (1) 
        { 
            ["menu_image"]=> string(17) "1b5df-menu_16.jpg" 
        } 
[1]=> object(stdClass)#23 (1) 
        { 
            ["menu_image"]=> string(18) "2fe75-menu_17.jpeg" 
        } 
[2]=> object(stdClass)#24 (1) 
        { 
            ["menu_image"]=> string(16) "5ceda-menu_8.jpg" 
        } 
[3]=> object(stdClass)#25 (1) 
        { 
            ["menu_image"]=> string(17) "16079-menu_15.jpg" 
        } 
[4]=> object(stdClass)#26 (1) 
        { 
            ["menu_image"]=> string(17) "70c66-menu_13.jpg" 
        } 
[5]=> object(stdClass)#27 (1) 
        { 
            ["menu_image"]=> NULL 
        } 
}

我想在我的html页面中使用div标记显示该数组,但我仍然混淆了如何使用我想要的特定div标记循环它。

我想在我的html中显示该数组,这是我想要的格式:

<div class="row">
   <img src="menu_image">
   <img src="menu_image">
   <img src="menu_image">
</div>
<div class="row">
   <img src="menu_image">
   <img src="menu_image">
   <img src="menu_image">
</div>

如何使foreach循环以便我可以获得div格式?感谢

4 个答案:

答案 0 :(得分:1)

试试这个:

foreach (array_chunk($array, 3) as $objs) {
    echo "<div class=\"row\">\n";
    foreach ($objs as $obj) {
        echo "    <img src=\"$obj->menu_image\">\n";
    }
    echo "</div>\n";
}

打印:

<div class="row">
    <img src="1b5df-menu_16.jpg">
    <img src="2fe75-menu_17.jpeg">
    <img src="5ceda-menu_8.jpg">
</div>
<div class="row">
    <img src="16079-menu_15.jpg">
    <img src="70c66-menu_13.jpg">
    <img src="">
</div>

此答案使用array_chunk将数组拆分为3个块,例如

由此:

array(6) {
    [0] => object(stdClass)#22 (1) { ["menu_image"] => string(17) "1b5df-menu_16.jpg" }
    [1] => object(stdClass)#23 (1) { ["menu_image"] => string(18) "2fe75-menu_17.jpeg" }
    [2] => object(stdClass)#24 (1) { ["menu_image"] => string(16) "5ceda-menu_8.jpg" }
    [3] => object(stdClass)#25 (1) { ["menu_image"] => string(17) "16079-menu_15.jpg" }
    [4] => object(stdClass)#26 (1) { ["menu_image"] => string(17) "70c66-menu_13.jpg" }
    [5] => object(stdClass)#27 (1) { ["menu_image"] => NULL } 
}

对此:

array(6) {
    [0] => [
        [0] => object(stdClass)#22 (1) { ["menu_image"] => string(17) "1b5df-menu_16.jpg" }
        [1] => object(stdClass)#23 (1) { ["menu_image"] => string(18) "2fe75-menu_17.jpeg" }
        [2] => object(stdClass)#24 (1) { ["menu_image"] => string(16) "5ceda-menu_8.jpg" }
    ]
    [1] => [
        [0] => object(stdClass)#25 (1) { ["menu_image"] => string(17) "16079-menu_15.jpg" }
        [1] => object(stdClass)#26 (1) { ["menu_image"] => string(17) "70c66-menu_13.jpg" }
        [2] => object(stdClass)#27 (1) { ["menu_image"] => NULL }
    ]
}

因为每个图像src都包含在一个对象中,所以你必须使用对象表示法而不是数组表示法。

答案 1 :(得分:0)

使用array_chunk函数。

<?php foreach (array_chunk($array, 3) as $chunk): ?>
    <div class="row">
        <?php foreach ($chunk as $image): ?>
            <img src="<?php echo $image->menu_image ?>">
        <?php endforeach ?>
    </div>
<?php endforeach ?>

答案 2 :(得分:0)

您可以使用以下代码,只需使用foreach循环遍历menu_image。

<?php
$arrayName = array();
$arrayName[] = array(
    "menu_image" => "2fe75-menu_17.jpeg"
);
$arrayName[] = array(
    "menu_image" => "2fe75-menu_18.jpeg"
);
$arrayName[] = array(
    "menu_image" => "2fe75-menu_19.jpeg"
);

echo '<div class="row">';
foreach($arrayName as $key => $value){
    echo '<img src='."$value[menu_image]".'>';
}
echo '</div>';
?>

答案 3 :(得分:0)

执行这样的通用方法。如果你有超过6个图像,它将工作。             

        $i=0;
        $last_img = end($new);

        foreach($new as $key=>$row)
       {
            if($i==0)
             {
               echo '<div class="row">';
             }

             echo '<img src="'.$row->menu_image .'">';

             if($i==2 || $key==$last_img)
             {
                 echo '</div>';
                 $i=-1; //reset the i again -1 because ++ below so -1 
             }

            $i++;
       }  

       ?>