Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.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中将多维数组输出为3列div和ul li_Php_Html_Multidimensional Array_Foreach_While Loop - Fatal编程技术网

在php中将多维数组输出为3列div和ul li

在php中将多维数组输出为3列div和ul li,php,html,multidimensional-array,foreach,while-loop,Php,Html,Multidimensional Array,Foreach,While Loop,这里有一个数组:我试图将数组拆分为3列div,第一个数组应该包装成h3标记,然后其他数组应该显示在无序列表中 Array ( [0] => Array ( [label_01] => heading 01: [label_02] => heading 02: [label_03] => heading 03: ) [1] => Array

这里有一个数组:我试图将数组拆分为3列div,第一个数组应该包装成h3标记,然后其他数组应该显示在无序列表中

Array
(
    [0] => Array
        (
            [label_01] => heading 01:
            [label_02] => heading 02: 
            [label_03] => heading 03: 
        )

    [1] => Array
        (
            [label_01] => item 01
            [label_02] => item 02
            [label_03] => item 03
        )

    [2] => Array
        (
            [label_01] => item 001
            [label_02] => item 002
            [label_03] => item 003
        )

)
它应该是这样输出的

<div class="row">
    <div class="col-lg-4">
        <h3 class="text-primary text-center">heading 01:</h3>
        <ul class="list-box">
            <li class="bg-primary text-white">item 01</li>
            <li class="bg-primary text-white">item 001</li>
        </ul>
    </div>
    <div class="col-lg-4">
        <h3 class="text-warning text-center">heading 02:</h3>
        <ul class="list-box">
            <li class="bg-warning text-white">item 02</li>
            <li class="bg-warning text-white">item 002</li>
        </ul>
    </div>
    <div class="col-lg-4">
        <h3 class="text-blue text-center">heading 03:</h3>
        <ul class="list-box">
            <li class="bg-blue text-white">item 03</li>
            <li class="bg-blue text-white">item 003</li>
        </ul>
    </div>
</div>

标题01:
    第01项 第001项
标题02:
    第02项 第002项
标题03:
    第03项 第003项
到目前为止我已经试过了

<div class="row">
    <?php 
    $keys = array_keys($columns);
    for($i = 0; $i < count($columns); $i++) { ?>
        <div class="col-lg-4">
    <?php foreach($columns[$keys[$i]] as $key => $value) { ?>
            <li class="bg-primary text-white"><?php echo $value; ?></li>
    <?php } ?>
        </div>
    <?php } ?>
</div>
                </div>
            <?php } ?>
            </div>

  • 还有这个

    <div class="row">
        <?php foreach ( $columns as $column ) { ?>
        <div class="col-lg-4">
                <h3 class="text-primary text-center">Inspire: Self Leadership</h3>
                <ul class="list-box">
            <?php foreach ($column as $val) { ?>
            <li class="bg-primary text-white"><?php echo $val; ?></li>
            
            <?php } ?>
            </ul>
        </div>
        <?php } ?>
    </div>
    
    
    启发:自我领导
    

    任何帮助都将不胜感激!提前谢谢你

    首先,您的阵列不适合您想要做的事情。所以剩下两个选择;在第一个场景中,您必须首先更改数组结构(通过更改数组的键值使循环数组更适合您的需要),第二个场景是一个小bir静态解决方案,但它可能解决了您的问题,现在就是了

    <?php 
    $your_array = array(
        0 => array(
            'label_01' => 'heading 01:',
            'label_02' => 'heading 02:',
            'label_03' => 'heading 03:',
            ),
        1 => array(
            'label_01' => 'item 01',
            'label_02' => 'item 02',
            'label_03' => 'item 03',
            ),
        2 => array(
            'label_01' => 'item 001',
            'label_02' => 'item 002',
            'label_03' => 'item 003',
            ),
    ); //this is your sample array :P  
    
    ?>
    <div class="row">
    <?php 
    $headers = $your_array[0]; // fetch the headers first... because our main loop is headers in your case...
    $items = $your_array[1]; // fetch the items... we do it because your array is unordered for your needs...
    $sub_items = $your_array[2]; // fetch the sub_items... we do it because your array is unordered for your needs...
    
    foreach($headers as $key => $val) {
    ?>
    <div class="col-lg-4">
        <h3 class="text-primary text-center"><?php echo $val; ?></h3>
        <ul class="list-box">
            <?php 
            foreach($items as $key2 => $val2) { 
                if($key2 == $key) {
            ?>
            <li class="bg-primary text-white"><?php echo $val2; ?></li>
            <?php 
                }
            } 
    
            foreach($sub_items as $key2 => $val2) { 
                if($key2 == $key) {
            ?>
            <li class="bg-primary text-white"><?php echo $val2; ?></li>
            <?php 
                }
            } 
            ?>
        </ul>
    </div>
    <?php } ?>
    </div>
    
    
    

    首先,您的阵列不适合您想要做的事情。所以剩下两个选择;在第一个场景中,您必须首先更改数组结构(通过更改数组的键值使循环数组更适合您的需要),第二个场景是一个小bir静态解决方案,但它可能解决了您的问题,现在就是了

    <?php 
    $your_array = array(
        0 => array(
            'label_01' => 'heading 01:',
            'label_02' => 'heading 02:',
            'label_03' => 'heading 03:',
            ),
        1 => array(
            'label_01' => 'item 01',
            'label_02' => 'item 02',
            'label_03' => 'item 03',
            ),
        2 => array(
            'label_01' => 'item 001',
            'label_02' => 'item 002',
            'label_03' => 'item 003',
            ),
    ); //this is your sample array :P  
    
    ?>
    <div class="row">
    <?php 
    $headers = $your_array[0]; // fetch the headers first... because our main loop is headers in your case...
    $items = $your_array[1]; // fetch the items... we do it because your array is unordered for your needs...
    $sub_items = $your_array[2]; // fetch the sub_items... we do it because your array is unordered for your needs...
    
    foreach($headers as $key => $val) {
    ?>
    <div class="col-lg-4">
        <h3 class="text-primary text-center"><?php echo $val; ?></h3>
        <ul class="list-box">
            <?php 
            foreach($items as $key2 => $val2) { 
                if($key2 == $key) {
            ?>
            <li class="bg-primary text-white"><?php echo $val2; ?></li>
            <?php 
                }
            } 
    
            foreach($sub_items as $key2 => $val2) { 
                if($key2 == $key) {
            ?>
            <li class="bg-primary text-white"><?php echo $val2; ?></li>
            <?php 
                }
            } 
            ?>
        </ul>
    </div>
    <?php } ?>
    </div>
    
    
    

    使用该数组的副本和PHP Herdeoc插值的强大功能,您可以执行一点while循环。复制是为了保持原始阵列的完整性。如果您不介意,可以直接使用
    $data

    $data = [
        [
            'label_01' => 'heading 01:',
            'label_02' => 'heading 02:',
            'label_03' => 'heading 03:'
        ],
        [
            'label_01' => 'item 01',
            'label_02' => 'item 02',
            'label_03' => 'item 03'
        ],
        [
            'label_01' => 'item 001',
            'label_02' => 'item 002',
            'label_03' => 'item 003'
        ]
    ];
    
    echo '<div class="row">', PHP_EOL;
    $copy = $data;
    while(count($copy[0]))
    {
        $h3  = array_shift($copy[0]);
        $li1 = array_shift($copy[1]);
        $li2 = array_shift($copy[2]);
        echo <<<"_HTML"
        <div class="col-lg-4">
            <h3 class="text-primary text-center">$h3</h3>
            <ul class="list-box">
                <li class="bg-primary text-white">$li1</li>
                <li class="bg-primary text-white">$li2</li>
            </ul>
        </div>
    _HTML;
    }
    echo '</div>', PHP_EOL;
    
    $data=[
    [
    “label_01=>”标题01:“,
    “标签02”=>“标题02:”,
    “标签03”=>“标题03:”
    ],
    [
    “标签\u 01”=>“项目01”,
    “标签02”=>“项目02”,
    “标签03”=>“第03项”
    ],
    [
    'label_01'=>'item 001',
    “标签02”=>“项目002”,
    “标签03”=>“第003项”
    ]
    ];
    echo'',PHP_EOL;
    $copy=$data;
    而(计数($copy[0]))
    {
    $h3=数组_移位($copy[0]);
    $li1=数组_移位($copy[1]);
    $li2=数组_移位($copy[2]);
    
    echo使用该数组的副本和PHP Herdeoc插值的强大功能,您可以执行一点while循环。复制是为了保持原始数组的完整性。如果您不介意,可以直接使用
    $data

    $data = [
        [
            'label_01' => 'heading 01:',
            'label_02' => 'heading 02:',
            'label_03' => 'heading 03:'
        ],
        [
            'label_01' => 'item 01',
            'label_02' => 'item 02',
            'label_03' => 'item 03'
        ],
        [
            'label_01' => 'item 001',
            'label_02' => 'item 002',
            'label_03' => 'item 003'
        ]
    ];
    
    echo '<div class="row">', PHP_EOL;
    $copy = $data;
    while(count($copy[0]))
    {
        $h3  = array_shift($copy[0]);
        $li1 = array_shift($copy[1]);
        $li2 = array_shift($copy[2]);
        echo <<<"_HTML"
        <div class="col-lg-4">
            <h3 class="text-primary text-center">$h3</h3>
            <ul class="list-box">
                <li class="bg-primary text-white">$li1</li>
                <li class="bg-primary text-white">$li2</li>
            </ul>
        </div>
    _HTML;
    }
    echo '</div>', PHP_EOL;
    
    $data=[
    [
    “label_01=>”标题01:“,
    “标签02”=>“标题02:”,
    “标签03”=>“标题03:”
    ],
    [
    “标签\u 01”=>“项目01”,
    “标签02”=>“项目02”,
    “标签03”=>“第03项”
    ],
    [
    'label_01'=>'item 001',
    “标签02”=>“项目002”,
    “标签03”=>“第003项”
    ]
    ];
    echo'',PHP_EOL;
    $copy=$data;
    而(计数($copy[0]))
    {
    $h3=数组_移位($copy[0]);
    $li1=数组_移位($copy[1]);
    $li2=数组_移位($copy[2]);
    
    echo感谢您的回复。如果有更多数组,我们该怎么办?我们是否可以获取除第一个“$your_array[0]”之外的所有数组。这可能会解决我的问题。是的,我会尝试。如果您的数据都是预先准备好的,那么答案是肯定的。您始终必须使用$your_array[0]感谢您的回复。如果有更多数组,我们该怎么办?我们可以获取除第一个“$your_array[0]”之外的所有数组吗?这可能会解决我的问题。是的,我会尝试。如果您的数据都是相同的,答案是肯定的。您始终必须使用$your_array[0]获取所有标题谢谢您的回复。如果有更多数组,我们该怎么做?我们可以获取除第一个“数组移位($copy[0])之外的所有数组吗然后将所有其他数组放入一个变量$li中,这样就没有$li1、$li2、$li3等。这可能会解决我的问题。Shift的技巧是,它获取第一个数组值,独立于数字键或索引键。该解决方案非常适合您提供的数据。如果您有另一个结构,则必须提供另一个解决方案。我想出了另一个想法,hope它符合您的需要。答案得到了更新。这是另一个问题,但也很简单。因为它已经标记为正确,所以这里有一个pastebin。如果没有li项那么多的类,您将得到一个未定义的索引错误。我已经修复了更新行15。感谢您的回答。如果有更多数组,我们该如何做?我们可以获取所有arr吗不包括第一个“数组移位($copy[0]);”然后将所有其他数组放入一个变量$li中,这样就没有$li1、$li2、$li3等。这可能会解决我的问题。Shift的技巧是,它获取第一个数组值,独立于数字键或索引键。该解决方案非常适合您提供的数据。如果您有另一个结构,则必须提供另一个解决方案。我想出了另一个想法,hope它符合您的需要。答案得到了更新。这是另一个问题,但也很简单。因为它已经标记为正确,所以这里有一个pastebin。如果没有li项那么多的类,您将得到一个未定义的索引错误。我已经修复了更新第15行。