PHP - 从2个数组中订购信息

时间:2011-04-01 06:40:46

标签: php arrays

好的,我有2个阵列。 1个数组具有应显示的信息的ORDER,另一个数组具有该信息。但是我无法确定按照它应该在...中显示的顺序显示信息的方法。

例如,我在这里有这个数组,其中我没有控制权(意味着数组在我的代码甚至运行之前完成,所以我必须START这个数组,我不能改变这个实际的数组。我可以从这个数组构建一个数组,如果它可以帮助任何?但不确定如何......?)

$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']

另一个数组在一个函数中填充,并从该函数获取RETURNED并显示所有要显示的信息......

返回的信息是这个数组:

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']),
    ),
)
}

这只是一个例子,因为这个数组在EACH附件的函数内构建,进入另一个数组。当然还有更多信息。这里比我需要,但我会在以后缩小它。

所以,目前我正在使用$ attachments数组来获取所有附件,这也为我提供了附件的所有信息。没有任何问题。

我遇到的问题是如何从$ attach_info数组中按顺序从$ attachments数组中获取信息。我需要输出是attach_info数组中的数字,按照它所在的顺序。

例如,如果$attach_info数组是这样的:

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

它应该首先输出成员名,而不是文件名,而不是附件的时间,最后是帖子的链接。

所以这个数组的顺序很重要。并且应该从$ attachments数组中获取此信息。

有人可以帮我一个在foreach循环中设置它的方法,以便以正确的顺序回显信息。并且attach_info数组可以改变。我正在寻找一种快速的方法来做到这一点。如果您知道我的意思,我宁愿不必确定信息的顺序以及每次为$ attachments数组中的每个循环显示哪些信息。

谢谢你们Rock:)

修改

上面列出的$ attachments数组只是实际数组的1个输出。它实际上输出所有附件,所以我需要它能够通过所有附件循环,仍然只输出正确的顺序和正确的信息!对不起,如果我没有解释这个。

$ attachments数组是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数组以正确的顺序回显项目,并且只回显那些项目!

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:0)