当前位置: 首页 > 知识库问答 >
问题:

Foreach嵌套循环

耿俊彦
2023-03-14

这是我的代码。我遇到的问题是,我希望将HP在我的PHP代码中的数字转换为我的HP HTML代码,以及与Cylinder相同的内容。我已经想好了其他的东西,但说到这一部分我就卡住了

<?php 

    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);

    $cars = array(
        array(
            "car"       =>  "Ferrari",
            "model"     =>  "Testarossa",
            "gearbox"   =>  "Manual 5 Shift",
            "designer"  =>  "Battista Pininfarina",
            "engine"    => 
        array(
            "HP"        => 390, 
            "Cylinders" => 12
            ),
        ),

    );

    ?>

    <?php foreach($cars as $cars_key => $car_val): ?>

        <ul>
            <div style="margin-bottom: 10px;">
                <li><b>Car:</b> <?php echo $car_val["car"]; ?></li>
                <li><b>Model:</b> <?php echo $car_val["model"]; ?></li>
                <li><b>Gearbox:</b> <?php echo $car_val["gearbox"]; ?></li>
                <li><b>Designer:</b> <?php echo $car_val["designer"]; ?></li>
                <li><b>Engine</b></li>
                    <ul>
                        <li><b>HP:</b></li>            
                        <li><b>Cylinders:</b></li>                                        
                    </ul>
            </div>
        </ul>
    <?php endforeach; ?>

共有2个答案

颛孙子民
2023-03-14
匿名用户

从您的示例中,我觉得列表是静态的,由两个元素组成,那么您根本不需要为每个使用

<?php foreach($cars as $cars_key => $car_val): ?>
    <ul>
        <div style="margin-bottom: 10px;">
            <li><b>Car:</b> <?php echo $car_val["car"]; ?></li>
            <li><b>Model:</b> <?php echo $car_val["model"]; ?></li>
            <li><b>Gearbox:</b> <?php echo $car_val["gearbox"]; ?></li>
            <li><b>Designer:</b> <?php echo $car_val["designer"]; ?>
            </li>
            <li><b>Engine</b></li>
                <ul>
                    <li><b>HP:</b><?php echo $car_val["engine"]["HP"]; ?></li>            
                    <li><b>Cylinders:</b><?php echo $car_val["engine"]["Cylinders"]; ?></li>                                        
                </ul>
        </div>
    </ul>
<?php endforeach; ?>

如果您确实需要使用嵌套的 forEach,以下是您执行此操作的方法

foreach($cars as $cars_key => $car_val):
  if($cars_key == "engine")
      foreach($car_val["engine"] as $engine_key => $engine_val):
        echo $engine_key.$engine_val;
      endforeach;
endforeach;

庞安晏
2023-03-14

我有几个顾虑:

>

  • 当您将值硬编码到脚本中时,您将失去关联数组的出色/实用程序,否则您可以从数组中调用这些值。

    我不喜欢中间列表的外观

    我也不喜欢浮动子列表。它在逻辑上属于Engine,良好的标记将指示子列表存在于其父列表中。

    考虑到我的上述观点,以下是我的建议...

    *一些注意事项:

    • 随着数组大小的增加,我不确定您要如何布局多个列表。
    • 回声只是我的个人喜好。如果你愿意,你可以在php中弹出和弹出。
    • uc第一()允许您避免对密钥进行硬编码。
    • 我的片段将使您的任务干净、干燥、简洁。

    代码:(演示)

    $cars = array(
                array(
                    "car"       =>  "Ferrari",
                    "model"     =>  "Testarossa",
                    "gearbox"   =>  "Manual 5 Shift",
                    "designer"  =>  "Battista Pininfarina",
                    "engine"    =>  array(
                                        "HP"        => 390, 
                                        "Cylinders" => 12
                                    )
                )
            );
    
    foreach($cars as $details){
        echo "<ul style=\"margin-bottom:10px;\">";
            foreach($details as $key=>$item){
                echo "<li><b>",ucfirst($key),":</b>";
                if(!is_array($item)){
                    echo " $item</li>";
                }else{
                        echo "<ul>";
                            foreach($item as $subkey=>$subval){
                                echo "<li><b>$subkey:</b> $subval</li>";
                            }
                        echo "</ul>";
                    echo "</li>";
                }
            }
        echo "</ul>";
    }
    

    源代码输出:

    <ul style="margin-bottom:10px;">
        <li><b>Car:</b> Ferrari</li>
        <li><b>Model:</b> Testarossa</li>
        <li><b>Gearbox:</b> Manual 5 Shift</li>
        <li><b>Designer:</b> Battista Pininfarina</li>
        <li><b>Engine:</b>
            <ul>
                <li><b>HP:</b> 390</li>
                <li><b>Cylinders:</b> 12</li>
            </ul>
        </li>
    </ul>
    

    渲染输出:(运行我的片段@phptester.net看到这个)

  •  类似资料:
    • 我有一个这样的数组 我想做的是前面的模型,为其数量绘制徽标,因此三星=3,索尼=7,以此类推,将绘制3个索尼徽标和7个三星徽标。 我想出了这样的办法 但是当然,所有这些都是为了每个数组条目,呼应出名称,所以我最终打印了5个三星,打印了5个索尼,等等。 如何使其使用 qty 数组的值而不是条目数?

    • 我的代码有一个问题,它有两个嵌套的foreach循环: 所以我在“消息”中有2个条目,在“评论”中有4个条目,第一个条目为“消息”,第二个条目为2。我想要: 消息1-评论1-评论2 消息2-注释3-注释4 这就是我所拥有的: 消息1-评论1-评论2 消息2-注释1-注释2-注释3-注释4 我搜索了两个小时,在mysqli中没有找到解决方案:((当我找到时 mysqli_data_seek($com

    • 我正在寻找一种用函数式编程方法替换嵌套foreach循环的方法。情况是这样的: 目前我的代码是这样的: 这将生成如下所示的输出: 有谁知道如何用函数式编程替代方案替换foreach代码块?

    • 数据库表: 胶片(id\U胶片主键,名称) 流派(id_genrePK,名称) film_genre(id_filmFK,id_genreFK) 这将输出流派表中的所有流派: 这将输出特定电影的电影类型表中的所有选定类型: 我有一个问题,从数据库输出数据到多个选定的列表中的形式。这是一个电影数据库,我正在进行Foreach迭代,以读取电影流派的所有行,并输出到多个选择字段。但是我在向列表输出“选定

    • 我有以下表格: 类别:category_id,category_name 产品:标识、类别标识、产品名称 我使用的是Bootstrap4,我想将每个类别显示为手风琴标题,并在手风琴主体中列出属于该类别的所有产品。 使用PHP7 数据库数据:

    • 在我的Laravel5.4项目中,我试图从模型文章和状态之间的关系中获取一些数据。关系类型为OneToMany,其中Article具有一个状态,Status具有多个项目。 为了获取想要的数据,我迭代通过模型文章项目的集合,这些项目是eagerLoade连同模型/关系状态一起借助方法。第一次迭代构建了一个正确的查询,但是在每次迭代中,它都会追加由方法