2017-03-06 21 views
0

我想傳遞一個數組到我的視圖中,它包含一些標題和一些內容列表。如何顯示網頁標題下的內容而不重複Yii2中的標題?

我的數組是這樣的:

Array 
    (
     [0] => Array 
    (
     [trimester] => Trimester1 
     [subject] => ABC 
    ) 

    [1] => Array 
    (
     [trimester] => TrimesterII 
     [subject] => CDF 
    ) 

    [2] => Array 
    (
     [trimester] => TrimesterIII 
     [subject] => FGH 
    ) 

    [3] => Array 
    (
     [trimester] => TrimesterIV 
     [subject] => XYZ 
    ) 
    [4] => Array 
    (
     [trimester] => TrimesterI 
     [subject] => PQR 
    ) 
    [5] => Array 
    (
     [trimester] => TrimesterI 
     [subject] => FGH 
    ) 
    [6] => Array 
    (
     [trimester] => TrimesterII 
     [subject] => MNO 
    ) 


    ) 

我想dispaly像這樣的內容:

Trimester1 
    ABC 
    PQR 
    FGH 
    Trimester2 
    CDF 
    MNO 
    Trimester3 
    FGH 
    Trimester4 
    XYZ 

查看:

   <?php 

        $old = ""; 
        foreach ($curriculum_list as $a) 
        { 
         if ($old != $a->trimester) 
         { 
          $old = $a->trimester; 
         ?> 
        <tr class="odd"> 

        <td> 

        <h4><?=$a->trimester;?></h4> 

        </td> 

        </tr> 

        <tr class="even"> 

        <td valign="top"> 

        <ul> 

        <li><?=$a->subjects;?></li> 

        </ul> 

        </td> 

        </tr> 

       <?php } 
         else 
         { 
         ?> 

       <tr class="even"> 

        <td valign="top"> 

        <ul> 

        <li><?=$a->subjects;?></li> 

        </ul> 

        </td> 

        </tr> 

       <?php }}?> 

       </table> 

但我得到這樣的答案:

 Trimester I 
     ABC 
     Trimester II 
     CDF 
     Trimester III 
     FGH 
     Trimester IV 
     XYZ 
     Trimester I 
     PQR 
     FGH 
     Trimester II 
     MNO 

這就是我想顯示的標題(三個月)下的內容(科目),而不重複標題(三個月)。 我該如何解決這個問題?

+0

提供你做 –

+0

代碼它問題中提到 – Dijo

回答

1

假設你的數組名是$arr

第一排序它由三個月

ArrayHelper::multisort($arr, ['trimester'], [SORT_ASC]); 

使用數組助手添加ArrayHelper類,如下

use yii\helpers\ArrayHelper; 

守則控制器:

ArrayHelper::multisort($arr, ['trimester'], [SORT_ASC]); 

    $data=array(); 
    $temp_arr=array(); 
    $i=0;$j=0;$k=0; 
    foreach ($arr as $value) 
    { 
    if(!in_array($value['trimester'],$temp_arr)) 
    { 
     $j=0; 
     $temp_arr[]=$value['trimester']; 
     $data[$i]['trimester']=$value['trimester']; 
     $data[$i]['sub'][$j] = $value['subject']; 
     $k=$i;$j++;$i++; 
    } 
    else 
    { 
     $data[$k]['sub'][$j] = $value['subject']; 
     $j++; 
    } 
    } 

它會給你下面的數組:

Array 
(
    [0] => Array 
     (
      [trimester] => TrimesterI 
      [sub] => Array 
       (
        [0] => ABC 
        [1] => PQR 
        [2] => FGH 
       ) 

     ) 

    [1] => Array 
     (
      [trimester] => TrimesterII 
      [sub] => Array 
       (
        [0] => CDF 
        [1] => MNO 
       ) 

     ) 

    [2] => Array 
     (
      [trimester] => TrimesterIII 
      [sub] => Array 
       (
        [0] => FGH 
       ) 

     ) 

    [3] => Array 
     (
      [trimester] => TrimesterIV 
      [sub] => Array 
       (
        [0] => XYZ 
       ) 

     ) 

) 

代碼在您的視圖(管理作爲您的需要):

<?php 
foreach ($data as $value) { 
    ?> 
    <h4><?=$value['trimester']?></h4> 
    <?php 
     foreach ($value['sub'] as $subject) 
     { 
     ?> 
     <li><?=$subject?></li> 
     <?php 
     } 
    } 
?> 
1

試試這個。 $ newArr將是答案。

$newArr = []; 
foreach ($Curriculum as $option) { 
    $tri = $option['trimester']; 
    $sub = $option['subjects']; 
    $new= $option['name']; 

    $newArr[$trimester][$subjects] = $new; 
} 
+0

$ option中沒有字段「名稱」 – Dijo

相關問題