2013-07-20 44 views
0

我想计算数组中的重复的order_id并取决于表格单元格上的结果print rowspan。我不知道如何使用PHP实现这一点,任何帮助表示赞赏。表格单元格划分PHP

我有PHP数组这样的:

Array (
[0] => Array 
    (
     [order_id] => 1374282003 
     [status] => 1 
     [mark] => Casio 
     [model] => W-81 
     [price] => 10.00 
    ) 

[1] => Array 
    (
     [order_id] => 1374282003 
     [status] => 1 
     [mark] => Casio 
     [model] => W-81 
     [price] => 10.00 
    ) 

[2] => Array 
    (
     [order_id] => 1374282573 
     [status] => 1 
     [mark] => Casio 
     [model] => W-81 
     [price] => 10.00 
    ) 

[3] => Array 
    (
     [order_id] => 1374282573 
     [status] => 1 
     [mark] => Casio 
     [model] => W-81 
     [price] => 10.00 
    ) 

[4] => Array 
    (
     [order_id] => 1374282573 
     [status] => 1 
     [mark] => Casio 
     [model] => W-81 
     [price] => 10.00 
    ) 

我想用rowspan的上表单元格这样

<table> 
<tr> 
<td>Order</td> 
<td>Product</td> 
<td>Price</td> 
<td>Status</td> 
</tr> 
<tr> 
    <td rowspan="2">1374282003</td> 
    <td>Casio</td> 
    <td>10</td> 
    <td>1</td> 
</tr> 
<tr> 
    <td>Casio</td> 
    <td>10</td> 
    <td>1</td> 
</tr> 
<tr> 
<td rowspan="3">1374282573</td> 
    <td>Casio</td> 
    <td>10</td> 
    <td>1</td> 
</tr> 
<tr> 
    <td>Casio</td> 
    <td>10</td> 
    <td>1</td> 
</tr> 
<tr> 
    <td>Casio</td> 
    <td>10</td> 
    <td>1</td> 
</tr> 
</table> 

这是针对阵列循环

代码
<?php 
$rowspan = array_count_values(array_map(function($item) { return $item['order_id']; }, $result)); 
foreach($result as $row) { 
?> 
<tr> 
    <td rowspan="<?php echo $rowspan[$row['order_id']]"><?php echo $row['order_id']; ?></td> 
    <td><?php echo $row['mark']. " " .$row['model']; ?></td> 
    <td>1</td> 
    <td><?php echo number_format($row['price'], 2, '.', ','); ?> kuna</td> 
    <td><?php echo $row['status']; ?></td> 
</tr> 
<?php } ?> 
+0

对不起,我更新的第一篇文章与循环代码。 – user2499170

回答

0

试试这个在循环您使用填充表数据:

if(in_array($item['order_id'], $tempArray)) 
{ 
    $rowspan += count($tempArray); 
} 
$tempArray[] = $item['order_id']; 
+0

这将计算我需要多少行计算。但在我的代码这是用array_count_values – user2499170

+0

尝试使用'”><?php foreach($ row ['order_id'] as $ oID){echo $ oID。'
';}?>' – verbumSapienti

0
<?php 
$rowspan = array_count_values(array_map(function($item) { return $item['order_id']; }, $result)); 
foreach($result as $row) { 
?> 
<tr> 
    <td rowspan="<?php echo $rowspan[$row['order_id']]"><?php echo $row['order_id']; ?></td> 
    <td><?php echo $row['mark']. " " .$row['model']; ?></td> 
    <td>1</td> 
    <td><?php echo number_format($row['price'], 2, '.', ','); ?> kuna</td> 
    <td><?php echo $row['status']; ?></td> 
</tr> 
<?php } ?> 

好了,在这里,你有一些PHP,然后它周边的一些HTML,然后它到一些PHP和和。最终,这会让你发疯。

首先将每个文件的PHP标签减少到一个或两个。这并不意味着通过跳入和跳出PHP引擎来进行字符串处理。所以切换到这样的事情:

<?php 
$rowspan = array_count_values(array_map(function($item) { return $item['order_id']; }, $result)); 
foreach($result as $row){ 
    echo "<tr>\n"; 
    echo "<td rowspan=" . $rowspan[$row['order_id']] .$row['order_id'] ."></td>\n" ; 
    echo "<td><" .$row['mark']. " " .$row['model'] . "></td>\n"; 
    echo "<td>1</td>"; 
    echo "<td>" . $row['order_id']. "</td>"; 
    echo "<td><" . number_format($row['price'], 2, '.', ',') . "> kuna</td>\n"; 
    echo "<td><" .$row['status'] ."></td>\n"; 
    echo "</tr>\n"; 
    } 
?> 
0
<?php 

$results = [ 
0 => [ 
     'order_id'=> '1374282003', 
     'status'=> 1, 
     'mark'=> 'Casio', 
     'model'=> 'W-81', 
     'price'=> 10.00, 
    ], 
1=> [ 
     'order_id'=> '1374282003', 
     'status'=> 1, 
     'mark'=> 'Casio', 
     'model'=> 'W-81', 
     'price'=> 10.00, 
    ], 
2=> [ 
     'order_id'=> '1374282573', 
     'status'=> 1, 
     'mark'=> 'Casio', 
     'model'=> 'W-81', 
     'price'=> '10.00', 
    ], 
3=> [ 
     'order_id'=> '1374282573', 
     'status'=> 1, 
     'mark'=> 'Casio', 
     'model'=> 'W-81', 
     'price'=> 10.00, 
    ], 
4=> [ 
     'order_id'=> '1374282573', 
     'status'=> 1, 
     'mark'=> 'Casio', 
     'model'=> 'W-81', 
     'price'=> 10.00, 
    ], 
]; 

$pedidos = []; 

foreach($results as $key =>$pedido){ 
    $pedidos[$pedido['order_id']][] = $pedido; 
    $count = count($pedidos[$pedido['order_id']]); 
    $pedidos[$pedido['order_id']][0]['rowspan'] = $count; 
} 
?> 

<table border="1"> 
<tr> 
    <th>Order id</th> 
    <th>Produto</th> 
    <th>valor</th> 
    <th>Status</tr> 
</tr> 
<?php 
    foreach($pedidos as $pedido) { 
     foreach($pedido as $row){ 
?> 
<tr> 
<?php 
    if(isset($row['rowspan']) && $row['rowspan']>1){ 
      echo '<td rowspan=" ' . $row['rowspan'] .'">'.$row['order_id'].'</td>';  
    } 
    if(isset($row['rowspan']) && $row['rowspan'] === 1){ 
      echo '<td>'.$row['order_id'].'</td>';  
     } 
    ?> 
    <td><?php echo $row['mark']. " " .$row['model']; ?></td> 
    <td>1</td> 
    <td><?php echo number_format($row['price'], 2, '.', ','); ?> </td> 
    <td><?php echo $row['status']; ?></td> 
</tr> 
<?php } 
     } ?> 
</table>