好的,我有2个阵列。 1个数组具有应显示的信息的ORDER,另一个数组具有该信息。但是我无法确定按照它应该在...中显示的顺序显示信息的方法。
例如,我在这里有这个数组,其中我没有控制权(意味着数组在我的代码甚至运行之前完成,所以我必须START这个数组,我不能改变这个实际的数组。我可以从这个数组构建一个数组,如果它可以帮助任何?但不确定如何......?)
$attach_info(0,1,5,4);
此处的数值指向要显示的实际信息......
$attachments['member']['link']
)$attachments['file']['link']
)$attachments['file']['filesize']
)$attachments['file']['downloads']
)$attachments['topic']['link']
)$attachments['topic']['time']
)$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数组以正确的顺序回显项目,并且只回显那些项目!
答案 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)