我对 for() 循环有一个小问题,该循环以动态方式显示另一个 foreach() 循环内的值。
代码小背景:
输出表是根据从名为“categories”的表中的 1 列(名称为“coloane”)的一个 mysql 查询 SELECT(这是第一个选择)获得的值动态创建的;
“coloane”列中存储的值实际上是另一个名为“articles”的表中某些列的名称
第一个 mysql select 是从“coloane”列中获取值,以便我可以创建第二个。 在第二个表返回行 (num_rows() > 0) 后,我开始创建表。
该表有 2 个始终存在的静态列,其余列根据不同条件动态添加。
剧情:
- 我分解从第一个选择(从“coloane”列)获得的值,以生成表标题的第 [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
最佳答案
同时,在 friend 的帮助下,我终于找到了问题所在。
变量从字符串变为数字,因为在名为“categories”的表中,名为“coloane”的列的内部值由“,”(逗号)和“”(空格)分隔,如下所示
------------------------------------------
| coloane |
------------------------------------------
make, model, location, comments, status
------------------------------------------
为了解决这个问题,我发现我可以尝试做 str_replace在一个简单的 foreach() 循环中:)
类似这样的事情:
$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>';
}
这成功了:)
希望这能帮助其他遇到类似问题的人:)
最诚挚的问候, 迈克
关于PHP 仅显示另一个 foreach() 循环中的 for() 循环中的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27802492/