【问题标题】:Foreach loop and multi array echoForeach 循环和多数组回显
【发布时间】:2016-06-06 14:19:21
【问题描述】:

我在回显多维数组时遇到了一些困难。

这里是数组转储:

$_SESSION['cart']: Array
(
    [SW] => Array
        (
            [mID] => SW
            [mday] => Mon
            [mtime] => 9:00pm
            [seat] => Array
                (
                    [sa] => 8
                    [sp] => 5
                    [sc] => 2
                    [b2] => 3
                )

            [price] => $200.00
        )
)

这是我的回声循环:

<?php foreach ($_SESSION['cart'] as $booking) { ?>
    <section>
        <?php foreach ($booking as $key => $value) { ?>
            <ul>
                <li>
                    <label><?php echo $key ?>:</label>
                    <span><?php echo $value?></span>
                </li>
            </ul>
         <?php } ?>
    </section>
<?php } ?>

当循环到达 [seat] 时,我一直遇到错误。

如何让它遍历嵌套数组?

感谢您的帮助!

【问题讨论】:

  • 您还需要循环座位索引。
  • 检查 $value 是否是一个数组并循环它。

标签: php session web


【解决方案1】:

试试这个:

<?php foreach ($_SESSION['cart'] as $booking) { ?>
    <section>
        <?php foreach ($booking as $bookingValue) { ?>
            <ul>
                <li>

                <?php if(is_array($bookingValue)) {
                    foreach ($bookingValue as $key => $value) { ?>
                        <label><?php echo $key ?>:</label>
                        <span><?php echo $value?></span>
                    <?php }
                } else { ?>
                    <label><?php echo $key ?>:</label>
                    <span><?php echo $value?></span>
                <?php } ?>

                </li>
            </ul>
         <?php } ?>
    </section>
<?php } ?>

【讨论】:

  • 感谢您的回复!
【解决方案2】:

这是一个回显数组的每个项目的函数,即使它包含其他数组。你需要检查$value是否是一个数组。

function echoArrayValues($array) {
foreach ($array as $key => $value) {
    if(is_array($value)) {
       echoArrayValues($value);
       continue; 
    }
    echo $value.'<br>';
}
}

【讨论】:

  • 感谢您的回复!
【解决方案3】:

您不能回显数组。 echo 需要一个字符串。

如果值是一个数组,就再循环一次。

<?php foreach ($_SESSION['cart'] as $booking) { ?>
    <section>
        <?php foreach ($booking as $key => $value) { ?>
            <ul>
                <li>
                    <?php if(is_array($value)) {
                        foreach($value as $k=>$v){
                             echo $k." > ".$v."<br/>";
                        }
                    } else { ?>
                        <label><?php echo $key ?>:</label>
                        <span><?php echo $value?></span>
                    <?php } ?>
                </li>
            </ul>
         <?php } ?>
    </section>
<?php } ?>

【讨论】:

    【解决方案4】:

    试试这个:

    <?php foreach ($_SESSION['cart'] as $booking) { ?>
            <section>
                <?php foreach ($booking as $key => $value) { ?>
                    <ul>
                        <li>
                            <?php if( $key == 'seat' ) { 
                             foreach($value as $seat_key => $seat_value) { 
    
                             }
                             } else { ?>
                            <label><?php echo $key ?>:</label>
                            <span><?php echo $value?></span>
                            }?>
                        </li>
                    </ul>
                 <?php } ?>
            </section>
        <?php } ?>
    

    【讨论】:

    • 感谢您的回复!
    【解决方案5】:

    像这样的

    <?php foreach ($_SESSION['cart'] as $booking) { ?>
    <section>
        <?php foreach ($booking as $key => $value) { ?>
             <ul>
                <li>
                    <?php if(is_array($value)) {
                        foreach($value as $k=>$v){
                             echo $k." : ".$v."<br/>";
                        }
                    } else { ?>
                        <label><?php echo $key ?>:</label>
                        <span><?php echo $value?></span>
                    <?php } ?>
                </li>
            </ul>
         <?php } ?>
    </section>
    

    输出

    mID: SW
    mday: Mon
    mtime: 9:00pm
    sa : 8
    sp : 5
    sc : 2
    b2 : 3
    price: $200.00
    

    【讨论】:

    • 你是不是抄了我的准确答案?
    • @Drudge 非常感谢您的回复!
    • @Smeckop 如果您认为此答案有用,请点赞,以便将来对其他人有用。
    【解决方案6】:
    array_walk_recursive($_SESSION['cart'], function($value, $key) { echo $key . ' ' . $value . PHP_EOL; })
    

    输出:

    mID SW
    mday Mon
    mtime 9:00pm
    sa 8
    sp 5
    sc 2
    b2 3
    price $200.00
    

    【讨论】:

    • 感谢您的回复!
    猜你喜欢
    • 1970-01-01
    • 2016-03-02
    • 2015-05-08
    • 2011-08-30
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    相关资源
    最近更新 更多