foreach循环与嵌套数组?

时间:2014-09-16 17:22:35

标签: php arrays loops foreach

我的数组$数组包含以下内容:

Array ( [0] => Array (
               [label] => Location and Contact
               [description] =>
      ) [1] => Array (
               [label] => Province
               [name] => province
               [options] => Array ( [0] => Province 1
                                    [1] => Province 2
                                    [2] => Province 3 )
      ) [2] => Array (
               [label] => City
               [name] => city
               [options] => Array ( [0] => City 1
                                    [1] => City 2
                                    [2] => City 3 )
      ) 

我想要实现的是将这三个城市循环到底部,可能是使用[name] =>城市。

到目前为止我尝试过的(看起来不太好):

foreach ($array as $arr) {

            foreach ($arr['options'] as $option) {
            ?>
            &raquo; <?php echo $option; ?><br />
             <?php
            }

}

我对代码的明显问题是foreach循环中的foreach循环加上我还没弄清楚如何识别[name] =&gt;来自[name] =&gt;的城市省,他们都有[选项]。

我对循环数组很新。

更新(与我的回答)

结合worldofjr的答案和我的修改,这样我就可以将每个循环包含在像<li>, <option>, <div>等容器中,我只创建了两个foreach:

    foreach($array as $arr) {
        if($arr['name'] == "city") {
            $cities = $arr['options'];
        }
    }
    echo '<select>';
    foreach($cities as $city){

            echo '<option value="'.$city.'" class="class1 class2" data-att="att">'.$city.'</option>';

    }
    echo '</select>';

2 个答案:

答案 0 :(得分:2)

您可以使用implode($glue,$array),如下所示;

foreach($array as $arr) {
    if($arr['name'] == "city") {
        echo implode('<br>',$arr['options']);
    }
}

或者如果您想要打印城市列表,请将implode()与列表标签一起打包,就像这样;

foreach($array as $arr) {
    if($arr['name'] == "city") {
        echo "<ul><li>" . implode("</li><li>", $arr['options']) . "</li></ul>";
    }
}

请参阅PHP manual: implode

希望这有帮助!

答案 1 :(得分:1)

我根本不明白,但我想要的只是输出三个城市,哟可以做到这一点

foreach ($array as $arr) 
{
    if ($arry['name'] == 'city') 
    {
        foreach ($arr['options'] as $option) 
        {
            echo $option . '<br />';
        }
    }
}        

那够了吗?