PHP foreach嵌套表

PHP foreach嵌套表,php,foreach,html-table,nested,Php,Foreach,Html Table,Nested,但是,我似乎无法完成此任务,请帮助。以下是我为您修复的代码: 假设$spec中的元素数等于或大于$tunnid中的元素数。在编码者看来,count($spec)>=count($tunnid) 专家 塔尼德 我承认,这不是一个很好的解决办法 更新: 看起来您的数组可能有不同的长度,所以我更新了下面的代码来处理这种情况(不管哪个数组更长) 你可以这样做: <table style="width: 600px" class="slicedTable"> <tr>

但是,我似乎无法完成此任务,请帮助。

以下是我为您修复的代码:

假设
$spec
中的元素数等于或大于
$tunnid
中的元素数。在编码者看来,
count($spec)>=count($tunnid)


专家
塔尼德
我承认,这不是一个很好的解决办法

更新:
看起来您的数组可能有不同的长度,所以我更新了下面的代码来处理这种情况(不管哪个数组更长)


你可以这样做:

<table style="width: 600px" class="slicedTable">
   <tr>
      <th>Spetsialist</th>
      <th>Tunnid</th>
   </tr>
   <?php 
      $i = 0;
      foreach($specs as $specName => $spec): 
    ?>
   <tr>            
       <td><?php echo $specName; ?></td>
       <td><?php echo isset($tunnid[$i]) ? $tunnid[$i] : '-'; ?></td>
    </tr>
    <?php 
         $i++;
      endforeach; 
    ?>
 </table>

专家
塔尼德

另请参见此(*已更新*)。

$spec
的“名称”和
$tund
的“值”?为什么要关闭该表3次?是的,完全一样意外地将其留在其中,我绝望地尝试了两个相邻的表。您的数组看起来像什么?如果不是呢?现在表看起来很好,但只有当数字相同时,正确的值才会相邻。如果
$tunnid
中的元素数大于
$specs
中的元素数,那么
$tunnid
中的其余元素将不会显示。好的,那么我的查询肯定有问题,我没有在正确的名称旁边获得正确的值。我更新了答案,现在包括if
count($spec)>=count($tunnid)
。如果您查看提供的演示,您可以看到没有错误。如果
$specs
$tunnid
没有相同的长度,或者在代码的其他地方使用了名为
$I
的变量,我可以想到在代码中引发错误的唯一原因。在任何情况下,如果没有确切的错误(和代码),我都无法找出代码中的问题所在。@user2485439:考虑到您在另一个答案中的注释,您的数组可能具有不同的长度。我知道您现在可能已经解决了问题,但无论如何,我更新了我的答案,以便能够处理不同长度的数组。
$specs = array();

            foreach($data as $row) {
                $workerName = $row['Worker']['name'];
                if (!isset($specs[$workerName])) {
                    $specs[$workerName] = array('procs' => array(), 'extras' => array());
                }
<table style="width: 600px" class="slicedTable">
   <tr>
      <th>Spetsialist</th>
      <th>Tunnid</th>
   </tr>
   <?php 
      $i = 0;
      foreach($specs as $specName => $spec): 
    ?>
   <tr>            
       <td><?php echo $specName; ?></td>
       <td><?php echo isset($tunnid[$i]) ? $tunnid[$i] : '-'; ?></td>
    </tr>
    <?php 
         $i++;
      endforeach; 
    ?>
 </table>
<table style="width: 600px" class="slicedTable">
    <tr>
        <th>Spetsialist</th>
        <th>Tunnid</th>
    </tr>
<?php $len1 = count($specs); $len2 = count($tunnid);
      $specsKeys = array_keys($specs);
      for ($i = 0; $i < max($len1, $len2); $i++) {
          $name  = ($i < $len1) ? $specsKeys[$i] : ""; 
          $value = ($i < $len2) ? $tunnid[$i] : ""; ?>
    <tr>
        <td><?php echo($name); ?></td>
        <td><?php echo($value); ?></td>
    </tr>
<?php } ?>
</table>