2016-02-02 18 views
0

我正在嘗試使用openTBS.docxsub block中創建一個block,目前尚未成功。OpenTBS - 如何使用雙循環

這是我PHParray

$myBlock = array(
    0 => array(
      'description' => 'description1', 
      'name'  => 'name1', 
      'photos'  => array (
       0 => array(
        'path' => 'C:\path_to\pic_0000y.png', 
        'name' => 'photo0000'), 

       1 => array(
        'path' => 'C:\path_to\pic_1111y.png', 
        'name' => 'photo111'), 
       ), // end of photo array 
     ), // end of first element 

    1 => array(
      'description' => 'description2', 
      'name'  => 'name2', 
      'photos'  => array (
       0 => array(
        'path' => 'C:\path_to\pic_3333y.png', 
        'name' => 'photo3333'), 

       1 => array(
        'path' => 'C:\path_to\pic_00000.png', 
        'name' => 'photo00000'), 
       ), // end of photo array 
     ), // end of second element 
); 

對此我融入TBS這樣的:

$this->TBS->MergeBlock('myBlock', $myBlock); 

php一個等效的什麼,我想實現:

foreach($myBlock as $myBlockKey => $myBlockData) 
{ 
    echo $myBlockData['description']; 
    echo $myBlockData['name']; 

    foreach($myBlockData['photos'] as $photoKey => $photoData) 
    { 
    echo $photoData['name']; 
    echo $photoData['path']; 
    } 
} 

這將顯示:

description1 
name1 
photo0000 
C:\path_to\pic_0000y.png 
photo111 
C:\path_to\pic_1111y.png 

description2 
name2 
photo3333 
C:\path_to\pic_3333y.png 
photo0000 
C:\path_to\pic_0000y.png 

我想沒有張貼,我已經試過做錯事的多點,但這是幾乎什麼我試圖做的:

[myBlock; block=begin;] 
     [myBlock.description] 
     [myBlock.name] 

     [myBlock.photos; block = begin;] // where it fails 
      [myBlock.photos.path]   // where it fails 
      [myBlock.photos.name]   // where it fails 
     [myBlock.photos; block=end;]  // where it fails 

[myBlock; block=end;] 

回答

1

你必須使用TBS automatic sub-block功能。

[myBlock; block=begin;sub1=photos] 
     [myBlock.description] 
     [myBlock.name] 

     [myBlock_sub1; block = begin;] 
      [myBlock_sub1.path] 
      [myBlock_sub1.name] 
     [myBlock_sub1.photos; block=end;] 

[myBlock; block=end;] 

你的語法[myBlock.photos;塊=開始]不能工作,因爲(1)爲[myBlock]的塊邊界已經被定義,所以在參數該標籤的「塊」被忽略。和(2)[myBlock.photos]是一個數組,因此無法顯示。

+0

再次感謝Skrol!這看起來不錯,今晚我會再試一次!再次感謝:) – mokk

+0

一如既往的你的答案,它完美的作品:)再次感謝Skrol,希望我有我需要的一切現在玩這個真棒圖書館! – mokk