0

好的,这听起来可能是一个奇怪的问题,所以首先让我列出基本情况:

在我们公司,我们正在使用票务系统。这个系统有一个常见问题数据库。我无法以任何方式更改数据库的结构,因为我们必须更改票务系统以应对这种变化,而这不是一个选择。

因此,除此之外......
因为没有可用的单独字段,我们在每个项目的标题中添加一个章节号以具有某种索引。

所以你会得到这样的东西:

1 start
1.1 some subchapter
2 new chapter
3 another chapter
3.1 sub of chapter
3.1.1 sub sub chapter

ETC..

使用漂亮的正则表达式可以很容易地从字符串中提取章节部分。但下一步将是根据父章节轻松找到相应的子章节。在没有数据库的情况下使其可搜索的最简单方法是多维数组,对吗?

所以你会得到这个:

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 => 返回 $chapters[3][1][1]['item']

但这只有在我可以以这种形式构建初始数组时才有可能。

4

1 回答 1

1

情况发生了变化,我们正在创建第二个数据库结构,该结构具有更好的设置来处理上述情况。

基本上,我们使用它来打印格式良好的 PDF 以及在票务系统的常见问题解答中推送信息。

这为我们提供了两全其美的优势,从而解决了上述问题。

于 2012-10-23T10:14:16.557 回答