好的,这可能听起来像一个奇怪的问题所以首先让我列出基本情况:
在我们公司,我们正在使用门票系统。该系统有一个FAQ dbase。我无法以任何方式更改数据库的结构,因为我们必须更改票证系统以应对该更改,这不是一个选项。
这样就可以了...... 因为没有可用的单独字段,所以我们在每个项目的标题中添加章节编号以获得某种索引。
所以你会得到这样的东西:
1 start
1.1 some subchapter
2 new chapter
3 another chapter
3.1 sub of chapter
3.1.1 sub sub chapter
等..
有一个漂亮的正则表达式的offcourse很容易从字符串中添加章节部分。但下一步是根据父章节轻松找到相应的子章节。在没有数据库的情况下使这种可搜索的最简单方法是多维数组,对吧?
所以你会得到这个:
array( 3 => array(
'item' => 'data', 1 => array('item', 2 = array() ) ) ) etc...
我现在所做的是创建一个章节索引数组(在3.1.1的情况下为[3,1,1]),因为我知道这个数组中总有1到3个项目根据数组长度进行了切换,然后执行了此操作:
$array[$index[0]][$index[1]]['item'] = $content;
但我觉得这是一种非常肮脏和不可行的方式。通常我会投票改变数据库结构,无论如何,但没有这个选项,我不确定最好的方法是什么。
任何帮助都会很棒!
编辑:在下面添加了我的评论以提高可读性
标题确实是一行,但那部分我正在使用正则表达式来提取章节部分。这样才有用。
我基本构建的是一个使用索引数组为每个章节或章节部分构建复选框列表的表单。但我不想搜索数组并比较键来查找子章节。因此,如果我选择3.1,我会检查3.1.1,3.1.2,因为密钥以3.1开头,我知道要打印它。
更快就能做到这一点:
选择3.1.1 =>返回$章节[3] [1] [1] ['item']
但是只有当我能够以该形式构建初始数组时才有可能。
答案 0 :(得分:1)
情况发生了变化,我们正在创建第二个数据库结构,其中有一个更好的设置来处理上述情况。
基本上我们使用它来打印格式良好的PDF以及推送票证系统常见问题解答中的信息。
这给了我们两全其美,从而解决了上述问题。