将多维数组除以键值php并输出以形成

时间:2019-01-02 20:05:46

标签: php arrays html5 multidimensional-array

我有一个无法编辑的查询,该查询在if语句上输出一个数组,并根据变量的值输出到可打印的html页面(作为带有分页符的表),但是我需要进一步探讨一下数组,以便根据键的不同值的数量输出带有分页符的多张纸。

if($Guide=='N'){
$decisionN[$j] = array(
   'Qty'=>$Qty ,
'Comments'=>$Notes,
'Location'=>$Location,
'GuideRef'=>$GuideRef ,  
                     );
$j++; 
    }

然后

<?php
}
if ($decisionN){
$Guide2="N"
    ?>

       

&nbsp;&nbsp; Checkin for <?php echo $Guide2;?>
<!--</div>-->

    <table class="tablesorter" id="guides" style="border: 1px solid black;">

        <thead>
            <tr>

              <!--<th style="width: 15px;">PO</th> -->
                <th style="width: 5px;">Qty</th>
                <th style="width: 15px;">COMMENTS</th>
                <th style="width: 10px;">LOCATION</th>
                <th style="width: 12px;">GUIDEREF</th>
            </tr>
        </thead>
        <tbody>

                <?php foreach($decisionN as $v){
                     echo "<tr>";
                  foreach($v as $vv){
                     echo "<td>{$vv}</td>";
                }
                    echo "<tr>";
}

 ?> </tbody><tfoot> </tfoot> </table></div> </div> <footer>Checkin List</footer>

工作完美并在页脚之后中断以获取下一个指南值,我需要的是将$ decisionN划分为基于$ GuideRef的differnet数组(可能是$ GuideRef的10个不同值,每个$ GuideRef可能有100个“行”)我尝试了几次不同的foreach语句,但没有任何想法?

1 个答案:

答案 0 :(得分:1)

我想我了解您的需求。

您有一个像这样的数组:

[
    [
        'Qty'=>$Qty,
        'Location'=>$Location,
        'GuideRef'=>$GuideRef,

    ],
    [
        'Qty'=>$Qty2,
        'Location'=>$Location2,
        'GuideRef'=>$GuideRef,
    ],
    [
        'Qty'=>$Qty3,
        'Location'=>$Location3,
        'GuideRef'=>$GuideRef2,
    ],
]

...但是您想要这样

[
    'guideref1' => [
        [
            'Qty'=>$Qty,
            'Location'=>$Location,
        ],
        [
            'Qty'=>$Qty2,
            'Location'=>$Location2,
        ]
    ],
    'guideref2' => [
        [
            'Qty'=>$Qty3,
            'Location'=>$Location3,
        ]
     ]
]

您应该做的是:

在您的初始循环(用于生成数组的循环)中,在每次迭代中,检查是否已经为键“ guiderefX”生成了子数组,如果确实已将其推入,则创建一个空的子数组,其键为“ guiderefX”,然后将其推入内部。

上面显示的内容允许您在显示表格时通过“ guideref”创建“组”。

这是一个示例,其中我按颜色将下面的数组分组:

<?php
    $arr = [
        [
            'color' =>  'yellow',
            'name' => 'apple'
        ],
        [
            'color' =>  'yellow',
            'name' => 'lemon'
        ],
        [
            'color' =>  'green',
            'name' => 'watermelon'
        ]
    ];

    $length = count($arr);
    $new_arr = [];
    for ($i=0; $i<$length; $i++) { 
        if(!isset($new_arr[ $arr[$i]['color'] ])) {
            $new_arr[ $arr[$i]['color'] ] = [];
        }
        array_push( $new_arr[ $arr[$i]['color'] ], $arr[$i]);
    }

我希望我了解您的需求...