gpt4 book ai didi

php - 在如何处理数组操作以创建表方面需要帮助?

转载 作者:可可西里 更新时间:2023-10-31 23:18:43 25 4
gpt4 key购买 nike

我有两个始终具有相同长度的数组:

$unit = array('a','b','c','d','a','b','d');
$type = array('x','y','z','x','y','z','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>";

我认为我需要将两者结合起来创建二维数组,所以我这样做了:

$newarray = array();
foreach($type as $key=>$val)
{
$newarray[$key][]=$val;
$newarray[$key][]=$unit[$key];
}

现在我无法确定继续进行的有效方法是什么?

如果你们能提供任何提示,那就太好了。

更新:

我的问题是如何在第二个 block 中创建一个表。需要明确的是,1 和 2 是数字,空格可以是零。

最佳答案

这应该适合你:

开始时,您可以使用 for 循环一次遍历两个数组并创建一个数组,其中每个 $TYPE 是子数组的键,在每个子数组中您计算哪个 $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
)

)

在此之后,它只是简单地打印你想要的数据。为此,您循环遍历所有使用 array_unique() 获得的唯一 $UNITS .对于每个单元,您循环遍历所有唯一的 $TYPE。在那里,您只需检查数组中是否有元素并打印它。

代码:

<?php

$UNIT = array('a','b','c','d','a','b','d');
$TYPE = array('x','y','z','x','y','z','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

关于php - 在如何处理数组操作以创建表方面需要帮助?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32358982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com