gpt4 book ai didi

php将数组行重新排列成列以显示在表中

转载 作者:行者123 更新时间:2023-11-30 22:21:24 30 4
gpt4 key购买 nike

我的数据库返回了这个数组。

Array
(
[0] => Array
(
[dwg_id] => 1
[sws_dwg_no] => 160-001
[client_dwg_no] => KSB/9972475771/WP5/02/001
[dwg_title] => OVERALL LAYOUT AND REFERENCE DRAWING
[dwg_by] => JES
[dwg_date] => 2016-03-11 16:13:00
[dwg_rev] => A
)

[1] => Array
(
[dwg_id] => 1
[sws_dwg_no] => 160-001
[client_dwg_no] => KSB/9972475771/WP5/02/001
[dwg_title] => OVERALL LAYOUT AND REFERENCE DRAWING
[dwg_by] => JES
[dwg_date] => 2016-04-04 21:41:31
[dwg_rev] => B
)

[2] => Array
(
[dwg_id] => 2
[sws_dwg_no] => 160-002
[client_dwg_no] => KSB/9972475771/WP5/02/002
[dwg_title] => OVERALL LAYOUT AND REFERENCE DRAWING
[dwg_by] => JES
[dwg_date] => 2016-03-11 16:13:00
[dwg_rev] => A
)

[3] => Array
(
[dwg_id] => 2
[sws_dwg_no] => 160-002
[client_dwg_no] => KSB/9972475771/WP5/02/002
[dwg_title] => OVERALL LAYOUT AND REFERENCE DRAWING
[dwg_by] => JES
[dwg_date] => 2016-04-04 21:41:31
[dwg_rev] => B
)

[4] => Array
(
[dwg_id] => 3
[sws_dwg_no] => 160-100
[client_dwg_no] => KSB/9972475771/WP5/02/100
[dwg_title] => CONCRETE WORK PLAN AND DETAIL
[dwg_by] => JES
[dwg_date] => 2016-03-11 16:13:00
[dwg_rev] => A
)

我想按此顺序排列数组,以便我可以用新数组填充 html 表。新数组的第 [0] 行是表格的标题。

新数组应该是这样的

Array
(
[0] => Array
(
[0] => Drawing no.
[1] => 160-001
[2] => 160-002
[3] => 160-100
[4] => 160-101
)

[1] => Array
(
[0] => Client drawing no.
[1] => KSB/9972475771/WP5/02/001
[2] => KSB/9972475771/WP5/02/002
[3] => KSB/9972475771/WP5/02/100
[4] => KSB/9972475771/WP5/02/101
)

[2] => Array
(
[0] => Title
[1] => OVERALL LAYOUT AND REFERENCE DRAWING
[2] => OVERALL LAYOUT AND REFERENCE DRAWING
[3] => CONCRETE WORK PLAN AND DETAIL
[4] => CONCRETE WORK SECTION
)

[3] => Array
(
[0] => By
[1] => JES
[2] => JES
[3] => JES
[4] => JES
)

[4] => Array
(
[0] => A
[1] => 2016/04/04
[2] => 2016/04/04
[3] => 2016/03/11
[4] => 2016/03/11
)

[5] => Array
(
[0] => B
[1] => 2016/04/04
[2] => 2016/04/04
)

)

这是我的代码,在修订日期之前有效。 $result 是来自数据库的输入数组。

$new_array = array();
if(count($result) > 0)
{
$dwg_no = array(0=>'Drawing no.') + array_column($result, 'sws_dwg_no', 'dwg_id');
$client_dwg_no =array(0=> 'Client drawing no.') + array_column($result, 'client_dwg_no', 'dwg_id');
$title = array(0=>'Title') + array_column($result,'dwg_title', 'dwg_id');
$by = array(0=>'By') + array_column($result, 'dwg_by', 'dwg_id');
foreach($result as $row){
$rev = $row['dwg_rev'];
if($rev == $row['dwg_rev']){
$rev_date[$row['dwg_id']] = date('Y/m/d', strtotime($row['dwg_date']));
}
elseif($rev >= $row['dwg_rev']) {
$rev_date[$row['dwg_id']] = '';
}

${'rev_'. $rev . '_date'} = array(0 => $rev) + $rev_date;
}
$new_array = array(
0 => $dwg_no,
1 => $client_dwg_no,
2 => $title,
3 => $by,
4 => ${'rev_'. $rev . '_date'});

}

所以问题是

  1. 在正确的修订版下安排修订日期。我的代码目前不这样做。根据您刷新页面的次数,日期会发生变化。
  2. $new_array 必须是动态的,这样修改的次数就不会受到限制。修订顺序是从 A - Z 然后是 1 - 99

表格应该是这样的 enter image description here

最佳答案

只是做一个矩阵转置

function transpose($array) {
array_unshift($array, null);
call_user_func_array('array_map', $array);
}

之前:

160-001 | 160-002 | 160-003 | 
KSB/9972475771/WP5/02/001 | KSB/9972475771/WP5/02/002 | KSB/9972475771/WP5/02/100 |

之后:

160-001 | KSB/9972475771/WP5/02/001 | 
160-002 | KSB/9972475771/WP5/02/002 |
160-003 | KSB/9972475771/WP5/02/100 |

这是我的完整代码:

<?php

$data = [
['160-001','160-002','160-003'],
['KSB/9972475771/WP5/02/001', 'KSB/9972475771/WP5/02/002 ', 'KSB/9972475771/WP5/02/100']
];

function transpose($array) {
array_unshift($array, null);
return call_user_func_array('array_map', $array);
}

foreach($data as $row) {
foreach($row as $column) {
echo $column . " | ";
}
echo "<br>";
}

$data = transpose($data);

foreach($data as $row) {
foreach($row as $column) {
echo $column . " | ";
}
echo "<br>";
}

?>

关于php将数组行重新排列成列以显示在表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36551444/

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