2016-08-10 2 views
0

Когда я нажимаю Linuxbasics, если страница по умолчанию там открыта. Я получаю страницу по умолчанию, но мой li зацикливается. Из моего кода я использовал многомерный массив. Ниже мой код и image.I показано в Image Я получаю основы Linux дважды: enter image description hereКак остановить цикл foreach для суб-курсов?

<ul class="sub-menu" style="border-right: 2px solid #;"> 
<?php foreach($outContentArrResults AS $keyCmsId => $valArrMenu){?> 
    <?php if($valArrMenu['cPId']==0){?> 
     <li class="menu-item-has-children"> 
      <a href="#"><?php echo isset($valArrMenu['cName']) ? $valArrMenu['cName']:'';?></a> 
      <?php $slugName = isset($valArrMenu['cSName']) ? $valArrMenu['cSName']:''; 
      $id =isset($valArrMenu['cId']) ? $valArrMenu['cId']:''; 
      $courseChild =isset($valArrMenu['courseChild']) ? $valArrMenu['courseChild']:'';?> 
     <?php foreach($courseChild AS $keyId => $courseResult){ 
     if($courseResult['cPId']==$id){?> 
      <ul class="sub-menu" style="border-right: 2px solid #;border-left: 2px solid #;"> 
       <?php foreach($courseChild AS $keyId => $courseResult){?> 
       <?php if($courseResult['cPId']==$id){?> 
       <?php $courseSubChild =isset($courseResult['courseChild']) ? $courseResult['courseChild']:''; 
        foreach($courseSubChild AS $keyIdsss => $courseSubResult){ 
        $Subid =isset($courseSubResult['cId']) ? $courseSubResult['cId']:''; 
        $SubslugName =isset($courseSubResult['cSName']) ? $courseSubResult['cSName']:'';?> 
         <li> 
          <a href="<?php echo $config['LIVE_URL'];?>courses/<?php echo isset($slugName) ? $slugName :'';?>/<?php echo isset($courseResult['cSName']) ? $courseResult['cSName']:'';?>/<?php echo $SubslugName;?>/<?php echo isset($courseSubResult['conSName']) ? $courseSubResult['conSName']:'';?>"><?php echo isset($courseResult['cName']) ? $courseResult['cName']:'';?></a> 
         </li> 
        <?php }?> 
       <?php }?> 
       <?php }?> 
      </ul> 
     <?php }?> 
     <?php }?> 
     </li> 
    <?php }?> 
<?php }?> 

Вот мой массив:

Array 
(
[0] => Array 
    (
     [cId] => 1 
     [cName] => Linux 
     [cSName] => linux 
     [isTryItEditor] => 0 
     [cImg] => 
     [cCDate] => 2016-08-10 11:47:53 
     [cPId] => 0 
     [conSName] => 
     [conIDPage] => 
     [courseChild] => Array 
      (
       [0] => Array 
        (
         [cId] => 2 
         [cName] => Linux Basics 
         [cSName] => linux-basics 
         [isTryItEditor] => 0 
         [cImg] => 
         [cCDate] => 2016-08-10 11:48:51 
         [cPId] => 1 
         [conSName] => 
         [conIDPage] => 
         [courseChild] => Array 
          (
           [0] => Array 
            (
             [cId] => 4 
             [cName] => basic commands 
             [cSName] => basic-commands 
             [isTryItEditor] => 0 
             [cImg] => 
             [cCDate] => 2016-08-10 11:56:41 
             [cPId] => 2 
             [conSName] => hii 
             [conIDPage] => 1 
             [courseChild] => Array 
              (
              ) 

            ) 

           [1] => Array 
            (
             [cId] => 3 
             [cName] => Filter commands 
             [cSName] => filter-commands 
             [isTryItEditor] => 0 
             [cImg] => 
             [cCDate] => 2016-08-10 11:49:14 
             [cPId] => 2 
             [conSName] => 
             [conIDPage] => 
             [courseChild] => Array 
              (
              ) 
            ) 
          ) 
        ) 
      ) 
     ) 
    ) 
+1

Где вы хотите остановить цикл, просто используйте оператор break. –

+0

ваш код - ад. однако, если я правильно ее заметил, ваш самый внутренний цикл печатает неправильные вещи. – Jakumi

+0

Почему вы положили флаг C? Я не вижу здесь кода С. – Tim

ответ

0

Вы можете хранить значение в массив из того, что он выглядит как ваш intial foreach loop вызывает проблему

, а затем использовать if (! in _array()), чтобы печатать только те значения, которые там нет

0

Как упоминалось в «BeetleJuice», попробуйте сначала протестировать логику с помощью чистого кода PHP, а затем интегрировать с HTML, это облегчит работу.

Что касается вашего кода, кажется, что ваш самый внутренний цикл имеет неправильную печать данных. Вобще ниже изменений в коде, чтобы идентифицировать проблему: Вместо

<li> 
        <a href="<?php echo $config['LIVE_URL'];?>courses/<?php echo isset($slugName) ? $slugName :'';?>/<?php echo isset($courseResult['cSName']) ? $courseResult['cSName']:'';?>/<?php echo $SubslugName;?>/<?php echo isset($courseSubResult['conSName']) ? $courseSubResult['conSName']:'';?>"><?php echo isset($courseResult['cName']) ? $courseResult['cName']:'';?></a> 
       </li> 

       run this, 

       <li> 
        <?php echo $courseResult['cId']?> 
       </li> 

Как у вас есть уникальный CID для каждого уровня записи, вы можете легко trackdown вопроса.

Надеюсь, это поможет.

Thanks