创建 html table 并使用数组中的数据填充

Create html table and fill using data in array

你能帮我解决 php 中的循环问题吗?搞不懂好几个小时

总的来说,下面的数据是聚类计算的结果 - KMeans。下面的数组是分组后的数据。

问题出在显示它的时候,因为它对我来说太混乱了。

所以我有如下数组数据。

array (size=3)
  0 =>
    array (size=8)
      'Label 1' => int 1
      'Label 2' => int 0
      'Label 3' => int 0
      'Label 4' => int 0
      'Label 5' => int 0
      'Label 6' => int 0
      'Label 7' => int 1
      'Label 8' => int 0
  1 => 
    array (size=8)
      'Label 1' => int 0
      'Label 2' => int 0
      'Label 3' => int 1
      'Label 4' => int 0
      'Label 5' => int 1
      'Label 6' => int 1
      'Label 7' => int 0
      'Label 8' => int 0
  2 => 
    array (size=8)
      'Label 1' => int 0
      'Label 2' => int 1
      'Label 3' => int 0
      'Label 4' => int 1
      'Label 5' => int 0
      'Label 6' => int 0
      'Label 7' => int 0
      'Label 8' => int 1

我想创建一个看起来像这样的 table。

标签 群组
标签 1 C1
标签 2 C3
标签 3 C2
标签 4 C3
标签 5 C2
标签 6 C2
标签 7 C1
标签 8 C3

Where array 0.1,2 will be used to identify C1, C2, C3. so

array 0 = C1
array 1 = C2
array 2 = C3

Saya sudah mencoba seperti ini, tetapi hasil yang diharapkan membingungkan dan sejak itu, hanya macet di sini

// $dataset->count() = 8
for ($i=0; $i<$dataset->count(); $i++){ 
    
    // $dataset->label($i) = get lable
    echo $dataset->label($i) . "<br>";

    // $results->count() = 3
    for ($j=0; $j<$results->count(); $j++){ 
        if ($dataset->label($i) == array_keys($results->offsetGet($j))[$i]){

            // $results->offsetGet($j) = contains the array above
            echo $results->offsetGet($j)[array_keys($results->offsetGet($j))[$i]];
            echo "<br>";
        }

    }
    echo "<br>";
}

已经是这样的代码的结果了, 像 table.

这样的最终结果让我很困惑
Label 1
1
0
0

Label 2
0
0
1

Label 3
0
1
0

Label 4
0
0
1

Label 5
0
1
0

Label 6
0
1
0

Label 7
1
0
0

Label 8
0
0
1

所以这样想来判断标签是属于哪个组 因此数组键为 0.1,2 以指定 C1、C2、C3,例如 更准确地说,每个标签的值 1 以确定该组所属的位置;每个标签的值为 0 表示不是该组的成员。

0 => 'Label 1' => 1 // then it is a member of C1, and if
0 => 'Label 2' => 0 // is not a member of C1;
1 => 'Label 3' => 1 // then it is a member of C2
2 => 'Label 2' => 1 // and now label 2 is a member of C3
[
    0 => [
       'Label 1' => 1, // member C1
       'Label 2' => 0,
       'Label 3' => 0,
        . . .
    ],
    1 => [
       'Label 1' => 0,
       'Label 2' => 0,
       'Label 3' => 1, // member C2
        ...
    ],
    2 => [
       'Label 1' => 0,
       'Label 2' => 1, // member C3
       'Label 3' => 0,
       ...
    ]
]

使用 foreach 遍历第一个子数组,扩展语法使您可以访问键和值。如果值为 1,则您希望在第二列中输出 C1。使用key访问其他两个子数组中对应的值,根据这些值是否为1输出C2/C3

<table>
  <thead>
    <tr>
      <td>Label</td>
      <td>Group</td>
    </tr>
  </thead>
  <tbody>
    <?php foreach($data[0] as $label => $value): ?>
    <tr>
      <td><?php echo $label; ?></td>
      <td><?php
        if($value == 1) { echo 'C1'; }
        if($data[1][$label] == 1) { echo 'C2'; }
        if($data[2][$label] == 1) { echo 'C3'; }
      ?></td>
    </tr>
    <?php endforeach; ?>
  </tbody>
</table>

减少数据集的实例:https://3v4l.org/qb3FA