我对以动态方式在另一个 foreach() 循环中显示值的 for() 循环有小问题。
代码的小背景:
-
输出表是根据从名为"类别"的表中的 1 列(名称为"路环")中的一个 mysql 查询 SELECT(这是第一个选择)获得的值动态创建的;
-
存储在"路环"列中的值实际上是另一个名为"文章"的表中某些列的名称
-
第一个 mysql 选择是从"路环"列中获取值,以便我可以创建第二个。在第二个表返回行(num_rows()> 0)后,我开始创建表。
-
该表有 2 个始终存在的静态列,其余列根据不同的条件动态添加。
剧情:
- 我分解从第一个选择中获得的值 - 从"路环"列 - 为表格标题制作 [th];
- 这个爆炸我把它存储在变量"$rows_th"下;
- 为了为表头制作 [th],我使用 foreach() 循环(在这里我还删除了任何下划线);
- 之后,我继续使用另一个 foreach() 创建 [tbody] 和 [td],只是这个 foreach 是为第二个选择的值完成的;
- 在这个 foreach() 中,我创建了另一个循环,在变量 "$rows_th" 上使用 for() 函数,因此表具有相同的长度;
-
这里的值组合如下:
'<td id="'.$i.'">'.$values_td[$rows_th[$i]].'</td>';
主要问题是,使用上面列出的格式,它只会显示第一个值!
当我尝试使用 is_string() 函数验证"$values_td[$rows_th[$i]]"时,我发现第一个值是一个字符串,之后,所有其他值都不是字符串......
执行的测试:
if (is_string($values_td[$rows_th[$i]]))
print '<td id="'.$i.'">Value found!!!</td>';
} else {
print '<td id="'.$i.'">No luck...</td>';
}
关于可能出现什么问题的任何想法?
我知道我错过了一些东西,但我似乎无法弄清楚:-/
此处列出了整个代码:http://pastebin.com/4MFifh92
与此同时,在朋友的帮助下,我终于发现了哪里出了问题。
变量从字符串变为数字,因为在名为"类别"的表中,名为"路环"的列内部的值由","(逗号)和" "(空格)分隔,如下所示
------------------------------------------
| coloane |
------------------------------------------
make, model, location, comments, status
------------------------------------------
为了解决这个问题,我发现我可以尝试在一个简单的 foreach() 循环:)中执行str_replace
像这样:
$i=0;
foreach($rows_th as $values_th) {
$i++;
$cols_td = str_replace(' ', '', $values_th);
$actual_value = $values_td->$cols_td;
print '<td id="'.$i.'">'.$actual_value.'</td>';
}
这起到了作用:)
希望这将帮助遇到与此:)类似问题的其他人
此致敬意话筒
你不能做这样的事情吗:
SELECT * FROM results_query_header_by_cat WHERE `id` = 3;
然后:
SELECT * FROM results_query_content_by_cat WHERE `id_category` = 3;
然后得到结果:
echo '[thead]';
foreach ( $results as $result ){
foreach( $result['coloane'] as $header ){
echo '[th]'.$header.'[/th]';
}
}
echo '[/thead][tbody]';
foreach ( $records as $record ){
echo '[tr][td]' .
$result['producator'] . '[/td][td]' .
$result['model'] . '[/td][td]' .
$result['imei'] . '[/td][td]' .
$result['locatie'] . '[/td][/tr]';
}
echo '[/tbody]';
这就是你要找的吗?
e:我还没有尝试过这个,但我想它是这样的。只:
按类别 ID 获取标头
按类别 ID 获取记录。
将第一个结果集作为带有循环的标头回显,
将第二个结果集回显为循环中列的表行。