【问题标题】:Looping within a Loop from a Nested Array in PHP在 PHP 中的嵌套数组的循环内循环
【发布时间】:2017-06-23 18:02:55
【问题描述】:

我有一个产品数据数组,在数组中有包含规格数据的嵌套数组。我希望以块的形式返回数据,循环显示每个产品的名称和属性。测试数组设置如下:

$products = [
    $product = [
        'name' => 'product name 1a',
        $specification = [
            'Unknown Property' => 'value1a',
            'Unknown Property' => 'value2a',
            'Unknown Property' => 'value3a',
            'Unknown Property' => 'value4a',
        ]
    ],
    $product = [
        'name' => 'product name 1b',
        $specification = [
            'Unknown Property' => 'value1b',
            'Unknown Property' => 'value2b',
            'Unknown Property' => 'value3b',
        ]
    ],
    $product = [
        'name' => 'product name 1c',
        $specification = [
            'Unknown Property' => 'value1c',
            'Unknown Property' => 'value2c',
            'Unknown Property' => 'value3c',
            'Unknown Property' => 'value4c',
        ]
    ],
];

我正在寻找的最终结果是:

<li>
    <h4>Product Name 1a</h4>
    <ul>
        <li>Unknown Property: value1a</li>
        <li>Unknown Property: value2a</li>
        <li>Unknown Property: value3a</li>
        <li>Unknown Property: value4a</li>
    </ul>
</li>
<li>
    <h4>Product Name 1b</h4>
    <ul>
        <li>Unknown Property: value1b</li>
        <li>Unknown Property: value2b</li>
        <li>Unknown Property: value3b</li>
    </ul>
</li>
<li>
    <h4>Product Name 1c</h4>
    <ul>
        <li>Unknown Property: value1c</li>
        <li>Unknown Property: value2c</li>
        <li>Unknown Property: value3c</li>
        <li>Unknown Property: value4c</li>
    </ul>
</li>

我是 PHP 数组的新手,找不到任何关于如何在我理解的循环中执行循环的参考。

【问题讨论】:

    标签: php arrays loops nested-loops


    【解决方案1】:

    首先,对您的数组定义进行一点修正。虽然您的数组定义是有效的,但是当您使用关联数组时,让我们充分利用该功能。

    在下面的代码中,我删除了数组数据中的变量,它们没有用。制作了一个名为 specification 的新键,以更好地组织数据并使用唯一键而不是 Unknown Property 在您的情况下刚刚被替换

    $products = [
        [
            'name' => 'product name 1a',
            'specification' => [
                'Unknown Property 1' => 'value1a',
                'Unknown Property 2' => 'value2a',
                'Unknown Property 3' => 'value3a',
                'Unknown Property 4' => 'value4a',
            ]
        ],
        [
            'name' => 'product name 1b',
            'specification' => [
                'Unknown Property 1' => 'value1b',
                'Unknown Property 2' => 'value2b',
                'Unknown Property 3' => 'value3b',
            ]
        ],
        [
            'name' => 'product name 1c',
            'specification' => [
                'Unknown Property 1' => 'value1c',
                'Unknown Property 2' => 'value2c',
                'Unknown Property 3' => 'value3c',
                'Unknown Property 4' => 'value4c',
            ]
        ],
    ];
    

    现在,要遍历这个嵌套数组,我们可以像下面那样使用两个 foreach 循环

    foreach ($products as $product) {
        echo "<li>";
        echo "<h4>" . $product[ 'name' ] . "</h4>";
    
        if ( count( $product[ 'specification' ] ) ) {
            // check if there's anything in specification
            // then
            echo "<ul>";
            foreach ($product[ 'specification' ] as $property => $value) {
                echo "<li>" . $property . ":" . $value .  "</li>";
            }
            echo "</ul>";
        }
        echo "</li>";
    }
    

    【讨论】:

    • 完美运行,感谢您的指点。我想我理解这种方法,并且将来应该能够使用它。
    【解决方案2】:

    试试这个:-

     echo "<ul>";
     foreach ($products as $product) {
         echo "<h4>".$product['name']."</h4>";
         echo "<ul>";
         foreach ($product[0] as $key => $value) {
             echo "<li>".$value."</li>";
         }
         echo "</ul>";
    }
    

    请记住,您的产品规格密钥必须是唯一的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 2015-12-05
      • 1970-01-01
      • 2021-05-30
      相关资源
      最近更新 更多