PHP-来自2个数组的订单信息

PHP-来自2个数组的订单信息,php,arrays,Php,Arrays,好的,我有两个数组。1个数组具有应显示信息的顺序,而另一个数组具有该信息。但是我很难确定一种方式来显示信息的顺序,它应该显示在 例如,我这里有一个数组,我无法控制它(这意味着数组在我的代码运行之前就完成了,所以我必须从这个数组开始,我不能改变这个实际的数组。如果这个数组有帮助的话,我可以从这个数组构建一个数组?但不确定如何…?) 此处的数值指向要显示的实际信息 0=成员名称($attachments['member']['link']) 1=文件名($attachments['file']['

好的,我有两个数组。1个数组具有应显示信息的顺序,而另一个数组具有该信息。但是我很难确定一种方式来显示信息的顺序,它应该显示在

例如,我这里有一个数组,我无法控制它(这意味着数组在我的代码运行之前就完成了,所以我必须从这个数组开始,我不能改变这个实际的数组。如果这个数组有帮助的话,我可以从这个数组构建一个数组?但不确定如何…?)

此处的数值指向要显示的实际信息

  • 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']),
    ),
)
}
但是我需要根据$attach_info数组以正确的顺序回显这些项目,并且只回显这些项目

可能有帮助

最好尝试以下方法:

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;
    }
}

好的,您基本上描述了使用=>Loop over
attach_info
参数并创建一个函数的算法,该函数将通过索引获取数组的正确成员。这很简单。你好,Jaroslav,编辑了我的答案,因为有多个附件,可以有多个附件。如果不尝试对附件进行排序,请使用
array\u multisort
。如果只是以正确的顺序显示数据,则必须循环。将您的foreach循环与ayk建议的嵌套循环一起使用,但不要使用
echo$attachments[…]
使用
echo$item[…]
。将以正确的顺序显示每个附件的值。没有办法避免嵌套循环。谢谢,这是我能想到的唯一可行的方法,但它必须有一个附件循环,因为记住$attachments数组在另一个数组中,因为还有不止一个附件。Solo,有什么问题吗?添加更多行到这个数组?@Kamilos-什么?我只是稍微修改了我的原始问题,这样现在就更有意义了。很抱歉把这件事搞混了。
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'];
}
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;
    }
}