2015-10-21 4 views
1

Привет, может кто-нибудь помочь мне через это. Я начинаю учиться, пожалуйста, помогите мне в гнезде через петлю foreach. Вот код.Вложенная петля foreach в php

<?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> 
+1

В чем проблема? Этот код не работает? Пожалуйста, объясните вашу проблему с соответствующими сведениями. – Tushar

+0

Код работает нормально, но значения первого имени массива $ повторяются –

+0

Если цикл в цикле, я думаю, создаст список 36 записей. – RamRaider

ответ

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>"; 
} 
1

Вы вставили $ ссылки внутри цикла foreach. В основном каждый раз, когда вы зацикливаете один элемент массива, т.е. Партнерская программа, вы зацикливаете весь массив $ 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> 
+0

Или - если по какой-то причине вы должны начать с двух отдельных массивов [array_combine] (http://docs.php.net/array_combine) или [MultipleIterator] (http: //docs.php .net/manual/en/class.multipleiterator.php) может быть полезным. – VolkerK

+0

О, спасибо вам большое ... Это сработало, .. –

1

Вы можете сделать этот путь -

$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>"; 
} 

Или сгенерировать один массив (ключ => значение) и цикл через него.

+0

Превосходно. Спасибо .. Его работали! –

0

Если вы хотите что-то вроде этого:

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>"); 
?> 
+0

@hemanthkumar рад, что это сработало! :) –

+0

@hemanthkumar, кстати, если один из этих ответов решит вашу проблему, вы должны отметить ее как решения, чтобы каждый знал, какой из них решил проблему :) –

Смежные вопросы