请理解这不是我的设计方式,也不是做这样事情的正确方法。
但是,由于我被赋予了这项任务,并且完全无法绕过数据的结构方式,因此我的任务是处理我被赋予的任务。
我有一个结构如下的表:
ID
UniqueName
DisplayName
Tag1
Tag...
Tag27
是的,我有 27 列,Tag1
- Tag27
注意:由于数据来自 15 年未更新的旧软件,因此无法更改,也没有任何更新的机会。 (因此我的困境)
我正在使用 PDO
的 fetchAll(PDO::FETCH_ASSOC)
我怎样才能遍历这些 Tag*
列,并且只遍历 Tag*
列,而不必输入 rs[$i]['Tag #']
对于每个单独的一个,还注意到在某些情况下我可以有 14 个 Tag
列,而不是我在这个例子中声明的 27 个...
列代码:
// prod_opts_value_fields_prefix = "Tag"
foreach ($rs[$i] as $key => $val) {
if ( strpos ( strtolower ( $key ), strtolower ( $prod_opts_value_fields_prefix ) ) !== false ) {
$vals .= $val . '|';
echo $val . '<br />';
}
}
没有任何东西得到echo
最佳答案
您可以在 rs[$i]
上运行 foreach
并检查 key 是否包含带有 strpos
的“标签”并从那里。
或者,您可以只使用在 1 到 27(或任何最大标记值)上运行的 for
循环,并使用 if
条件检查 rs[$ i]['Tag$N']
(其中 N 是 for 循环计数变量)被设置,如果没有从循环中中断,因为这意味着您已经遍历了所有可能的标签。
这里的第二个解决方案确实假设标签总是按顺序和升序编号。
关于php - 记录集中的循环列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45014302/