php – 需要有关如何使用数组操作来创建表的帮助?
发布时间:2020-12-13 16:57:51 所属栏目:PHP教程 来源:网络整理
导读:我有两个总是具有相同长度的数组: $unit = array('a','b','c','d','a','d');$type = array('x','y','z','x','x'); 也可能有更多类型的单位或类型.例如:单位可能是5而不是4(a,b,c,d)或类型可能是5而不是3(x,y,z).但是两个数组的长度是相同的. 现在有了这些
我有两个总是具有相同长度的数组:
$unit = array('a','b','c','d','a','d'); $type = array('x','y','z','x','x'); 也可能有更多类型的单位或类型.例如:单位可能是5而不是4(a,b,c,d)或类型可能是5而不是3(x,y,z).但是两个数组的长度是相同的. 现在有了这些数据,我想创建一个这样的表: x y z a 1 1 b 1 1 c 1 d 2 到目前为止我做了什么: $TYPE = array_values(array_unique($type)); $UNIT = array_values(array_unique($unit)); 这两个将提供第一列和第一行. echo "<table border='1' cellpadding='5' cellspacing='0' style='border-collapse:collapse;'>"; echo "<tr><td>" . ' ' . "</td>"; $lengthtype = count($TYPE); for($i=0; $i<$lengthtype; $i++) { echo "<td>" . $TYPE[$i] . "</td>"; } echo "</tr>"; $unitlength = count($UNIT); for($i=0; $i<$unitlength;$i++) { echo "<tr>"; echo "<td>" . $UNIT[$i] . "</td>"; echo "</tr>"; } echo "</table>"; 我想我需要将两者结合起来创建2D数组,所以我这样做了: $newarray = array(); foreach($type as $key=>$val) { $newarray[$key][]=$val; $newarray[$key][]=$unit[$key]; } 现在我无法确定有效的方法是什么? 如果你们可以提供任何非常好的提示. 更新: 我的问题是如何在第二个块中创建一个表.要清楚的是,1和2是数字,空格可以为零. 解决方法
这应该适合你:
在开始时,您可以使用for循环一次循环遍历两个数组并创建一个数组,其中每个$TYPE是subArray的键,并在每个subArray中计算哪个$UNIT出现在同一位置. 意味着你创建一个这样的数组: Array ( //↓ Each '$TYPE' [x] => Array ( [a] => 1 [d] => 2 //↑ ↑ Amount //Each '$UNIT',which occurs at the same position as this type ) [y] => Array ( [b] => 1 [a] => 1 ) [z] => Array ( [c] => 1 [b] => 1 ) ) 在此之后,它只是根据您的需要打印数据.为此,您将遍历 码: <?php $UNIT = array('a','d'); $TYPE = array('x','x'); $count = []; for($i = 0,$length = count($UNIT); $i < $length; $i++) { if(!isset($count[$TYPE[$i]][$UNIT[$i]])) $count[$TYPE[$i]][$UNIT[$i]] = 0; $count[$TYPE[$i]][$UNIT[$i]]++; } echo "<table border='1' cellpadding='5' cellspacing='0' style='border-collapse:collapse;'>"; echo "<tr><td></td><td>" . implode("</td><td>",array_unique($TYPE)) . "</td></tr>"; foreach(array_unique($UNIT) as $key){ echo "<tr><td>$key</td>"; foreach(array_unique($TYPE) as $v) echo "<td>" . (isset($count[$v][$key]) ? $count[$v][$key] : "") . "</td>"; echo "<tr>"; } echo "</table>"; ?> 输出: x y z a 1 1 b 1 1 c 1 d 2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |