如何在模板端的一个foreach中将数组拆分为两个表行“”

时间:2013-05-14 22:56:34

标签: php html arrays foreach html-table

由于使用受限制的工作环境,我需要将此数组的一半放入一个表行,将另一半放入另一个表行。

这是数组(已经按照我需要的顺序排序):

Array
(
    [product] => KFE-1221        
    [description] => Classic Blue                                        
    [current_stock] => 630
    [purchase_order] => 
    [total_sales] => 0
    [avail_to_sell] => 630
    [size_run1] => 15
    [size_run2] => 62
    [size_run3] => 122
    [size_run4] => 113
    [size_run5] => 102
    [size_run6] => 92
    [size_run7] => 63
    [size_run8] => 61
    [size_run9] => 0
    [size_run10] => 0
)

我需要将“size_run1” - “size_run10”中的数组拆分为单独的表格行。

以前,当我不需要size_run时,我有这个将数组显示到表(标准foreach)中。由于我的要求,我将其添加进去。(是的,我使用弃用的PHP)

<?php
while($data = mssql_fetch_assoc($result_ats)) {
    if ($data['avail_to_sell'] <= 0){   
    echo '<tr class="error">';
      }
    else {
    echo '<tr>';
      }
    foreach($data as $k => $v){

        echo '<td>'.$v.'</td>';
        echo '</tr>';

     }
  }
?>

我想将它保存为一个数组的原因是因为我对所有信息使用了一个查询,并且对于我正在使用的庞大数据库,我更有意义将它拆分为模板端而不是有单独的数组,并添加一个匹配产品与size_run的过程。

如果不将阵列拆分为不同的数组,最好的方法是什么?

我想要的输出,即将数组'$ v'拆分为两个单独的表,如下所示:

  <tr>
    <th>product</th>
    <th>description</th>
    <th>current_stock</th>
    <th>purchase_order</th>
    <th>total_sales</th>
    <th>avail_to_sell</th>
  </tr>
  <tr>
    <th>size_run1</th>
    <th>size_run2</th>
    <th>size_run3</th>
    <th>size_run4</th>
    <th>size_run5</th>
    <th>size_run6</th>
    <th>size_run7</th>
    <th>size_run8</th>
    <th>size_run9</th>
    <th>size_run10</th>
  </tr>

2 个答案:

答案 0 :(得分:1)

这样的事情:

$firstRow = array('product', 'description', 'current_stock', 'purchase_order', ... );
$secondRow = array('size_run1', 'size_run2', 'size_run3', ... );

while($data = mssql_fetch_assoc($result_ats)) {

  echo '<tr>';

  foreach($firstRow as $key){

    echo '<td>' . $data[$key] . '</td>';

  }

  echo '</tr>';  
  echo '<tr>';

  foreach($secondRow as $key){

    echo '<td>' . $data[$key] . '</td>';

  }

  echo '</tr>';    

}

如果您想更改密钥,仍然可以维护。

答案 1 :(得分:0)

我仍会创建一个新数组,然后在你不需要时将其销毁。

$newArray = array();

foreach($array as $key=>$value){
    $pos = strpos($key, "size_run");
    if($pos!==false){
        $newArray[$key] = $value;
    }
}