Php 操作多个数组以输出唯一值表

Php 操作多个数组以输出唯一值表,php,html,arrays,sorting,multidimensional-array,Php,Html,Arrays,Sorting,Multidimensional Array,我有5个不同的数组,我需要使用它们生成一个显示信息的表。此表不能有重复项。这在某种程度上是一个相当简单的任务,但我正在寻找的是最优雅的解决方案-一个不需要大量for循环、数组合并等的解决方案 该表需要输出用于照片打印的信息。看起来应该有点像这样: 不是这样的: 阵列如下所示: //img arr: $img_arr = array(array('002_chrysanthemum', '6x4'), array('002_chrysanthemum', '9x6')); /

我有5个不同的数组,我需要使用它们生成一个显示信息的表。此表不能有重复项。这在某种程度上是一个相当简单的任务,但我正在寻找的是最优雅的解决方案-一个不需要大量for循环、数组合并等的解决方案

该表需要输出用于照片打印的信息。看起来应该有点像这样:

不是这样的:

阵列如下所示:

//img arr:
        $img_arr = array(array('002_chrysanthemum', '6x4'), array('002_chrysanthemum', '9x6'));

//size arr:
    $size_arr = array('6x4', '9x6');

//finish arr:
    $finish_arr = array('glossy', 'glossy');

//qty arr:
    $qty_arr = array(2, 3);

//media arr:
    $media_arr = array('std', 'std');
谢谢


编辑-指出完工/数量的打字错误,已更改,谢谢

将图像分组到一个数组中,首先按图像名称索引,其次按其大小索引。 循环每个大小以呈现列标题,然后循环每个分组图像以呈现行

$img_arr = array(array('002_chrysanthemum', '6x4'), array('002_chrysanthemum', '9x6'));
$size_arr = array('6x4', '9x6');
$finish_arr = array('glossy', 'glossy');
$qty_arr = array(2, 3);
$media_arr = array('std', 'std');
$images = array();

foreach($img_arr as $key => $img) {
    $images[$img[0]][$img[1]] = array(
        'finish' => $finish_arr[$key],
        'qty' => $qty_arr[$key],
        'media' => $media_arr[$key],
    );
}

print "<table>";
print "<tr><th></th>";

foreach($size_arr as $size) {
    print "<th>$size</th>";
}

print "</tr>";

foreach($images as $name => $image) {
    print "<tr><td>$name</td>";        

    foreach($size_arr as $size) {
        print "<td>" . $image[$size]['qty'] 
        . '@' . $image[$size]['finish']
        . ' ' . $image[$size]['media'] . "</td>";          
    }

    print "</tr>";
}

print "</table>";
$img_arr=数组(数组('002_菊花','6x4')、数组('002_菊花','9x6');
$size_arr=阵列('6x4','9x6');
$finish_arr=数组(‘光泽’、‘光泽’);
$qty\U arr=数组(2,3);
$media_arr=数组('std','std');
$images=array();
foreach($img\u arr as$key=>$img){
$images[$img[0][$img[1]]=array(
“finish”=>$finish\u arr[$key],
“数量”=>$qty\U arr[$key],
“媒体”=>$media\u arr[$key],
);
}
打印“”;
打印“”;
foreach($size\u arr as$size){
打印“$size”;
}
打印“”;
foreach($image as$name=>$image){
打印“$name”;
foreach($size\u arr as$size){
打印“.$image[$size]['qty']
.@.$image[$size]['finish']
“.$image[$size]['media']”;
}
打印“”;
}
打印“”;
可以组合成一个合理的阵列,如:

foreach($img_arr as $k=>$img) {
    foreach($size_arr as $size) {
         $prints[$img][$size]['finish'] = $finish_arr[$k];
         $prints[$img][$size]['qty'] = $qty_arr[$k];
         $prints[$img][$size]['media'] = $media_arr[$k];
      }
  }
结果基于这样一种思想,即图像阵列是x轴,大小是y轴,所有其他阵列都是基于y轴位置的属性。那么:

 print_r($prints);
返回

Array (
    [002_chrysanthemum] => Array
        (
            [6x4] => Array
                (
                    [finish] => glossy
                    [qty] => 3
                    [media] => std
                )

            [9x6] => Array
                (
                    [finish] => glossy
                    [qty] => 3
                    [media] => std
                )
        )
)

这是一个非常优雅且简单的数据收集,您希望将其转换为一个表,现在它已被规范化。

第二个
$finish\u arr
应该是
$qty\u arr
?每个赋值上面的注释真的有用吗,因为它们只是重述数组的名称(除了那个打字错误)?你的意思是
//qty-arr:$qty\u-arr
?否则,您将覆盖先前的完成列表。这与我指出的打字错误相同。请显示您尝试过的内容,并解释您遇到的问题。此外,如果您展示了一个更完整的示例,而不仅仅是一行,这也会有所帮助。从你的帖子中很难理解一般情况是什么样的。是的,安东尼是对的。我遇到的问题在提供的图像中得到了说明。它为一个图像输出两行。我需要在一行中输出它。
Array (
    [002_chrysanthemum] => Array
        (
            [6x4] => Array
                (
                    [finish] => glossy
                    [qty] => 3
                    [media] => std
                )

            [9x6] => Array
                (
                    [finish] => glossy
                    [qty] => 3
                    [media] => std
                )
        )
)