【问题标题】:Nesting foreach loop in php在php中嵌套foreach循环
【发布时间】:2016-02-26 16:24:43
【问题描述】:

嗨,任何人都可以帮助我解决这个问题。我是初学者,请帮助我通过foreach循环嵌套。这是代码。

<?php 
                        $resource_url = "/app/resources/";
                        $names = array('Affiliate program','Careers','Corporate info','Eco Initiative','Government Customers','Social Responsibility');
                    ?>

                        <ul>
                            <?php foreach ($names as $arr) {
                                $links = array('affiliate_program','careers','corporate_info','eco','government','responsibility');
                                foreach($links as $url){
                                echo "<li><a href=\"";
                                echo $resource_url; 
                                echo $url;
                                echo "\">";
                                echo $arr;
                                echo "</a></li>";
                                }
                            }?>

                        </ul> 

【问题讨论】:

  • 有什么问题?此代码不起作用?请详细说明您的问题
  • 代码工作正常,但第一个数组 $names 的值重复
  • 我认为,在循环中包含循环将创建一个包含 36 个条目的列表。
  • 那是因为您的代码通过每个 $names 元素的 $links 元素运行。你需要使用 array_combine

标签: php loops foreach


【解决方案1】:

试试这个。

$base_url = "/app/resources/";
$names = array('Affiliate program','Careers','Corporate info','Eco Initiative','Government Customers','Social Responsibility');
$links = array('affiliate_program','careers','corporate_info','eco','government','responsibility');
foreach(array_combine($links, $names) as $key => $url){
    echo "<li><a href=\"";
    echo $base_url; 
    echo $key;
    echo "\">";
    echo $url;
    echo "</a></li>";
}

【讨论】:

    【解决方案2】:

    您已将 $links 插入到 foreach 循环中。基本上每次循环一个数组项时,即。附属程序,您循环整个 $links 数组。将 $links 放在 foreach 循环之外或更好。

    <?php
    $resource_url = "/app/resources/";
    $names = array(
        'affiliate_program' => 'Affiliate program',
        'careers' => 'Careers',
        'corporate_info' => 'Corporate info',
        'eco' => 'Eco Initiative',
        'government' => 'Government Customers',
        'responsibility' => 'Social Responsibility');
    ?>
    
    <ul>
        <?php foreach($names as $href => $arr) {
    
            echo "<li><a href=\"";
            echo $href;
            echo "\">";
            echo $arr;
            echo "</a></li>";
        }?>
    </ul> 
    

    【讨论】:

    【解决方案3】:

    你可以这样做 -

    $resource_url = "/app/resources/";
    $names = array('Affiliate program','Careers','Corporate info','Eco Initiative','Government Customers','Social Responsibility');
    $links = array('affiliate_program','careers','corporate_info','eco','government','responsibility');
    foreach(array_combine($links, $names) as $key => $url){
        echo "<li><a href=\"";
        echo $resource_url; 
        echo $key;
        echo "\">";
        echo $url;
        echo "</a></li>";
    }
    

    或者生成一个数组(key => value)并循环遍历它。

    【讨论】:

    • 好极了。谢谢你..它的工作。!
    【解决方案4】:

    如果你想要这样的东西:

    click me to see the image

    你可以简单地:

    <?php 
    $resource_url = "/app/resources/";
    $names = array('Affiliate program','Careers','Corporate info','Eco Initiative','Government Customers','Social Responsibility');
    $links = array('affiliate_program','careers','corporate_info','eco','government','responsibility');
    
    echo("<ul>");
    
    for($i=0; $i < count($names); $i++){
        echo "<li><a href='";
        echo $resource_url; 
        echo $links[$i];
        echo "'>";
        echo $names[$i];
        echo "</a></li>";
    }
    echo("</ul>");
    ?>
    

    【讨论】:

    • @hemanthkumar 顺便说一句,如果这些答案之一解决了您的问题,您应该将其标记为解决方案,以便每个人都知道哪一个解决了问题:)
    猜你喜欢
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多