转到或创建基于第二个索引号数组的数组索引


Go to or create array index base an second array of indexnumbers

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

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

所以有了这些
因为没有单独的字段可用,我们在每个项目的标题中添加一个章节编号,以获得某种索引。

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

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

等等。。

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

所以你会得到这个:

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;

但我觉得这是一种非常肮脏和不可行的方式。通常情况下,无论怎样,我都会投票支持更改数据库结构,但如果没有这个选项,我不确定什么是最好的方法

任何帮助都会很棒!

EDIT:为了更好的可读性,在下面添加了我的评论

标题确实是一行,但这部分我使用正则表达式来提取章节部分。所以这是有效的。

我基本上构建的是一个表单,它使用索引数组为每个章节或部分构建复选框列表。但我不想在数组中搜索并比较关键字来找到子适配器。因此,如果我选择3.1,我会选择3.1.1、3.1.2,因为密钥以3.1开头,我知道要打印它

更快的是能够做到这一点:

选择3.1.1=>返回$charges[3][1][1]['item']

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

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

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

这使我们两全其美,从而解决了上述问题。