我有一个无法编辑的查询,该查询在if语句上输出一个数组,并根据变量的值输出到可打印的html页面(作为带有分页符的表),但是我需要进一步探讨一下数组,以便根据键的不同值的数量输出带有分页符的多张纸。
if($Guide=='N'){
$decisionN[$j] = array(
'Qty'=>$Qty ,
'Comments'=>$Notes,
'Location'=>$Location,
'GuideRef'=>$GuideRef ,
);
$j++;
}
然后
<?php
}
if ($decisionN){
$Guide2="N"
?>
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语句,但没有任何想法?
答案 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]);
}
我希望我了解您的需求...