2017-08-15 5 views
0

私はかなり新しいPHPですが、配列を使いこなすことになりました。HTML要素に配列を挿入する

私はこのような構造を持っており、それらの多く:

["ugedage"]=> 
array(5) { 
    [0]=> 
    string(13) "Mandag (14/8)" 
    [1]=> 
    string(14) "Tirsdag (15/8)" 
    [2]=> 
    string(13) "Onsdag (16/8)" 
    [3]=> 
    string(14) "Torsdag (17/8)" 
    [4]=> 
    string(13) "Fredag (18/8)" 
    } 

このすべてを開始するコードは次のようになります。

$skema['ugedage'] = array(); 

私は、これは何も返さdoes notの(今のところ、これを試してみましたdivを空のままにしておきます):

<div class="test"><?php echo $skema['ugedage'][4]; ?></div> 

私はindex.phpにファイル(lectio.php)を含めています方法:

 <?php 
    include("lectio/lectio.php"); 
     $lectio = new lectio(); 
     $skemamag = $lectio->get_skema_til_elev(94, 16305782848); 
var_dump($skemamag); ?> 

$skemamag 

特定のidのすべての配列を出力しています。

EDIT: 全般的な機能として、学生のプラットフォームに入り、学生のスケジュールで要素を検索します。考え方は、配列を要素で囲んで表示することです。そのため、特定の配列をスタイルすることが可能です。

public function get_skema($url_til_skema) 
{ 
    $lectio_html = $this->get_content($url_til_skema); 
    $skema = array(); //Definer skema variabel til return værdi! 
    $skema['titel'] = ''; //Definer struktur for titel 
    $skema['ugedage'] = array(); //Definer struktur for liste over ugedage 
    $skema['dagskema'] = array(); //Definer struktur for dagskemaet 
    $html = new simple_html_dom(); 
    $html->load($lectio_html); 
    $skema['titel'] = $html->find('.s2weekHeader td', 0)->plaintext; //Hent overskriften uden html (uge og år) 
    $headers = $html->find('.s2dayHeader td'); //Søg efter listen over dage i det pågældende skema 
    for($i=1;$i<count($headers);$i++) //Bemærk vi starter i = 1 fordi vi springer den første over (altid tom) 
    { 
     $skema['ugedage'][] = $headers[$i]->plaintext; //Tilføj alle overskrifterne på ugedagene (uden html) 
     $skema['dagskema'][$headers[$i]->plaintext] = array(
      'noter' => array(), 
      'fag' => array() 
      ); //Tilføj en struktur til nøglen for hvert dagskema 
    } 
    $collection = $html->find('.s2skemabrikcontainer'); //Søg efter den ydre skema container for hver dag 
    /* 
    BEMÆRK!!!! 
    Den ydre skema container, der er langt flere end antal dage. Feks. kan en uge med 5 dage 
    have 11 ydre containere pga. 5 til moduler, 5 til "noter" i toppen, og én til sidebaren. 
    */ 
    $skemabrik = new simple_html_dom(); //Definer den her for genbrugens skyld da den kan tømmes efter hver iteration 
    for($i=0; $i<count($skema['ugedage']); $i++) //Iterer alle noterne i "toppen" af ugedagene 
    { 
     $skemabrik->load($collection[$i]->innertext); 
     $noter = $skemabrik->find('.s2skemabrikcontent'); 
     foreach($noter as $note) 
     { 
      //Tilføj til liste over noter for dagen 
      $skema['dagskema'][$skema['ugedage'][$i]]['noter'][] = trim(html_entity_decode($note->plaintext)); 
     } 
    } 
    //Iterer alle fagene/noterne i selve skemaet for hver dag 
    //Vi starter iteratoren i count($skema['ugedage']) + 1 fordi vi vil springe topnoter + et stil element i mellem over. 
    for($i=count($skema['ugedage'])+1; $i<(2*count($skema['ugedage'])+1); $i++) 
    { 
     $skemabrik->load($collection[$i]->innertext); 
     $noter = $skemabrik->find('.s2skemabrikcontent'); 
     foreach($noter as $note) 
     { 
      //Tilføj til dagskemaet 
      $skema['dagskema'][$skema['ugedage'][$i-count($skema['ugedage'])-1]]['fag'][] = array(
       'tekst' => trim(html_entity_decode($note->plaintext)), 
       'note' => '' 
       ); 
     } 
    } 
    for($i=5; $i<count($skema['ugedage'])+6; $i++) //Gennemgå alle dagene 
    { 
     $skemabrik->load($collection[$i]->innertext); //Indlæs hver dag 
     $skemabrik_elementer = $skemabrik->find('.s2skemabrik'); //Søg efter alle skemabrikkerne på denne dag 
     for($y=0; $y<count($skemabrik_elementer); $y++) //Gennemgå alle noterne til hvert fag/note/whatever 
     { 
      //Tilføj noten til det korrekte fag 
      $skema['dagskema'][$skema['ugedage'][$i-6]]['fag'][$y]['note']=trim(html_entity_decode($skemabrik_elementer[$y]->title)); 
     } 
    } 
    return $skema; 
} 

私はここで間違っていますか?事前

+0

あなたの質問から、あなたが見たい出力が不明です。例えば、サブアレイのインデックス '5'を参照していますが、サブアレイがインデックス '0'から' 4'まで初期化されていることだけを示しています。 – faintsignal

+0

これはタイプミスです、今修正されました。 –

+0

正確に何を達成しようとしていますか?それにもっと光を当ててみてください。あなたは簡単にループを使い、間違ったインデックスを置くことを避けることができます –

答えて

0

ありがとうございますおそらく境界エラーのうちを取得しています。ほとんどのプログラミング言語(PHPを含む)では、配列indices start at 0です。その最後の要素を得るには、番号4が必要です:

<div class="test"><?php echo $skema['ugedage'][4]; ?></div> 
+0

これは何も返しません。 divは純粋に空です。私はそれについての答えの多くを読むので、正直言って非常に奇妙です –

+0

$ skema配列に要素を追加する行を投稿できますか? – ishegg

+0

もっと理にかなっているように、私は公共の機能全体を投稿に追加します。この問題は、このコードで作成されたすべての配列に適用されます。 –

関連する問題