【发布时间】:2019-10-16 12:16:23
【问题描述】:
考虑以下$data 数组:
Array
(
[0] => Array
(
[code] => 20
[name] => Name 1
[month] => 4
[cost] => 100
..
..
)
[1] => Array
(
[code] => 30
[name] => Name 2
[month] => 3
[cost] => 120
..
..
)
[1] => Array
(
[code] => 30
[name] => Name 2
[month] => 6
[cost] => 180
..
..
)
..
..
)
每个数组可以有未知数量的代码。每个代码都有不同的月份 ID。我想对数据进行排序和显示,以便每个代码只有一行,然后在该行中,在等于月份的列号中显示 [cost] 的值。例如:
Column 1 2 3 4 5 6 7 8 9 10 11 12
Name 1 100
Name 2 120 180
这是我正在尝试的:
为了找出应该打印多少行,我获取了唯一的代码值:
$codes = array();
foreach( $data as $row ){
if ( in_array($row['code'], $codes) ) {
continue;
}
$codes[] = $row['code'];
}
接下来,我使用循环来打印行:
foreach( $codes as $code ){
//print 12 columns for each othe row
for ($i = 1; $<=12; $i++) {
//display column value if the code is same as the row
//and the month value is same as $i
//here's the problem
if (( $data['code'] == $code ) &&( $data['month'] == $i )) {
echo $data['cost'];
}
}
}
问题/疑问:
我是否需要在 for 循环中放置另一个循环来检查 $data['code'] == $code 是否存在?或者我该怎么做?
【问题讨论】:
-
你能发布一个所需输出数组的例子吗?
-
@Reqven 我刚刚在上面发布了所需的输出示例。基本上我想为每个代码每个月(1-12)运行一个循环,如果数组有该代码和月份的数据,那么就像我写的那样在表格中打印它。
-
那么你当前的代码输出正确的数据吗?
-
@u_mulder 不,这就是我发布问题的原因。如果条件不匹配,我不确定在上面的 for 循环中是否需要另一个循环。