2011-04-01 52 views
2

好吧,我有2個數組。 1數組具有應該顯示的信息的ORDER,而另一個數組具有該信息。但我無法嘗試確定一種方式來顯示信息的順序,它應該顯示在...PHP - 來自2個陣列的訂單信息

例如,我有這個數組在這裏,我有沒有控制OVER(意思是數組在我的代碼運行之前就已經完成了,所以我必須從這個數組開始,我不能修改這個實際的數組,如果它可以幫助任何數組,我可以從這個數組構建一個數組? )

$attach_info(0,1,5,4); 

的數值在這裏指出要顯示的實際信息...

  • 0 =成員名稱($attachments['member']['link']
  • 1 =文件名($attachments['file']['link']
  • 2 =作品尺寸($attachments['file']['filesize']
  • 3 =下載($attachments['file']['downloads']
  • 4 =信息的鏈接($attachments['topic']['link']
  • 5 =附件的時間($attachments['topic']['time']
  • 6 =圖像顯示($attachments['file']['image']['link']

其他數組被一個函數中填充和所有的要顯示的信息,該功能得到退還...

返回的信息是這樣的數組:

while ($row = $smcFunc['db_fetch_assoc']($request)) 
{ 
$attachments[$row['id_attach']] = array(
    'member' => array(
    'id' => $row['id_member'], 
    'name' => $row['poster_name'], 
    'link' => empty($row['id_member']) ? $row['poster_name'] : '<a href="' . $scripturl . '?action=profile;u=' . $row['id_member'] . '">' . $row['poster_name'] . '</a>', 
    ), 
    'file' => array(
    'filename' => $filename, 
    'filesize' => round($row['filesize'] /1024, 2) . $txt['kilobyte'], 
    'downloads' => $row['downloads'], 
    'href' => $scripturl . '?action=dlattach;topic=' . $row['id_topic'] . '.0;attach=' . $row['id_attach'], 
    'link' => '<img src="' . $settings['images_url'] . '/icons/clip.gif" alt="" /> <a href="' . $scripturl . '?action=dlattach;topic=' . $row['id_topic'] . '.0;attach=' . $row['id_attach'] . '">' . $filename . '</a>', 
    'is_image' => !empty($row['width']) && !empty($row['height']) && !empty($modSettings['attachmentShowImages']), 
    'image' = array(
     'id' => $id_thumb, 
     'width' => $row['width'], 
     'height' => $row['height'], 
     'img' => '<img src="' . $scripturl . '?action=dlattach;topic=' . $row['id_topic'] . '.0;attach=' . $row['id_attach'] . ';image" alt="' . $filename . '" />', 
     'thumb' => '<img src="' . $scripturl . '?action=dlattach;topic=' . $row['id_topic'] . '.0;attach=' . $id_thumb . ';image" alt="' . $filename . '" />', 
     'href' => $scripturl . '?action=dlattach;topic=' . $row['id_topic'] . '.0;attach=' . $id_thumb . ';image', 
     'link' => '<a href="' . $scripturl . '?action=dlattach;topic=' . $row['id_topic'] . '.0;attach=' . $row['id_attach'] . ';image"><img src="' . $scripturl . '?action=dlattach;topic=' . $row['id_topic'] . '.0;attach=' . $id_thumb . ';image" alt="' . $filename . '" /></a>', 
     ), 
    ), 
    'topic' => array(
    'id' => $row['id_topic'], 
    'subject' => $row['subject'], 
    'href' => $scripturl . '?topic=' . $row['id_topic'] . '.msg' . $row['id_msg'] . '#msg' . $row['id_msg'], 
    'link' => '<a href="' . $scripturl . '?topic=' . $row['id_topic'] . '.msg' . $row['id_msg'] . '#msg' . $row['id_msg'] . '">' . $row['subject'] . '</a>', 
    'time' => timeformat($row['poster_time']), 
    ), 
) 
} 

而這僅僅是一個例如,真正的原因是這個數組在這個函數中被建立,用於每個附件,這個附件進入另一個數組。當然還有更多信息。這裏比我需要,但我會稍後縮小它。

因此,目前我正在對$ attachments數組進行一次foreach以抓取所有附件,這也爲我提供了附件的所有信息。沒有任何問題。

我遇到的問題是如何從$ attach_info數組中獲取$ attachments數組中的信息。我需要的輸出是什麼attach_info陣列的數量,明智的,它是在訂單

例如,如果$attach_info數組是這樣的:

$attach_info(0,1,5,4);

比它應該輸出會員姓名首先是文件名,而不是附件時間,最後是該帖子的鏈接。

所以這個數組的順序很重要。並應該從$附件數組中獲取這些信息。

有人可以幫助我在foreach循環中設置它,以便信息以正確的順序回顯。 attach_info數組可以改變課程。我正在尋找一個快速的方法來做到這一點。如果您知道我的意思,我寧願不必確定信息的順序以及每次在$ attachments數組中的每個循環顯示哪些信息。你們

感謝搖滾:)

編輯

上面列出的$附件陣僅1實際陣列的輸出。它實際上是輸出所有附件,因此我需要它能夠通過所有附件進行循環,並且仍然只輸出正確的順序和正確的信息!對不起,如果我沒有解釋這一點。

$ attachments數組在1個foreach中是1個循環...所以它只是1個foreach的輸出。我需要他們。

所以,我現在能做的就是這個...

foreach($attachments as $item) 
{ 
    echo 
$item['member']['link'] . $item['file']['link'] . $item['file']['filesize'] . $item['file']['downloads'] . $item['topic']['link'] . $item['topic']['time'] . $item['file']['image']['link']; 
} 

,但我需要根據$ attach_info陣列呼應以正確的順序的項目,只能隨聲附和的項目!

+0

嗯,你已經基本描述的算法使用=>遍歷'attach_info'參數,並創建一個函數,將得到按索引排列的數組的正確成員。這很簡單。 – 2011-04-01 06:51:54

+0

你好雅羅斯拉夫,編輯我的答案,因爲有超過1個附件,可以有很多附件。 – SoLoGHoST 2011-04-01 08:03:15

+0

如果您不想使用'array_multisort'排序附件。如果它只是以正確的順序顯示數據,則必須循環。使用你的foreach循環,用** ayk **建議的嵌套循環,而不是'echo $ attachments [...]'使用'echo $ item [...]'。這將以正確的順序顯示每個附件的值。沒有辦法避免嵌套循環。 – 2011-04-01 13:31:13

回答

2

最好的是試試這個:

foreach($attach_info as $val){ 
    switch($val){ 
     case 0: echo $attachments['member']['link']; 
       break; 
     case 1: echo $attachments['file']['link']; 
       break; 
     case 2: echo $attachments['file']['filesize']; 
       break; 
     case 3: echo $attachments['file']['downloads']; 
       break; 
     case 4: echo $attachments['topic']['link']; 
       break; 
     case 5: echo $attachments['topic']['time']; 
       break; 
     case 6: echo $attachments['file']['image']['link']; 
       break; 
    } 
} 
+0

謝謝,這是我能想到這個工作的唯一方式,但它必須有一個LOOP的附件導致REMEMBER $ attachments數組在另一個數組內,因爲還有1個以上的附件。 – SoLoGHoST 2011-04-01 07:03:59

+0

獨奏,有什麼問題爲此添加更多行? – Kamilos 2011-04-01 07:14:31

+0

@Kamilos - 什麼?我剛剛編輯了我的原始問題,以便現在更有意義。對不起,這個混亂。 – SoLoGHoST 2011-04-01 07:16:22