首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php在MySQL数据库中保存可变大小的双数组

使用php在MySQL数据库中保存可变大小的双数组
EN

Stack Overflow用户
提问于 2015-11-17 14:18:44
回答 1查看 71关注 0票数 0

我试图将有理函数的系数存储到MySQL 5.5数据库中。这是使用PHP 5完成的,我对此相当陌生。

更详细地说,我有两个数组,每个数组代表分子和分母多项式的系数(因子形式)。两个数组的大小都是动态的,在1到10之间,如果需要,我可以将数字按任意顺序排序。所有的数字都是双倍型的。

存储在数据库中,我只需比较函数是否相等。这意味着我只需要知道两个数组是否具有相同的系数(顺序并不重要)。例如,1,2,3和3,1,2是相同的。

由于MySQL不提供直接保存数组,所以我不知道如何以最好的方式处理这个任务。

我目前的想法,我还不确定是否可行,是按降序对两个数组进行排序。然后将每一个双字符排成一个由8个符号组成的字符串,将所有字符串连在一起。之后,我会将(长)字符串存储为VARCHAR。为了比较两个函数,我将比较分子字符串和分母字符串,如果两者匹配,则函数是相同的。

我发现这种方法的一个问题是“类型转换”。将双字符解释为8个字符非常粗糙,我不知道产生的符号是否会过早结束字符串或造成任何麻烦。

这就引出了我的问题,这种方式有效吗?还是有更好的方法去做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-17 14:58:12

是的,这应该是可行的,而且可能是一个很好的方法。

如果只检查是否相等,则只需转换为一些规范的字符串表示形式,并将其保存在数据库中。更短的表示更有利于空间的使用,但让它仍然是人类可读的也很好,因为这将有助于进行临时查询和调试。

请注意,对于有理函数来说,顺序可能很重要。此外,如果您正在处理浮点,您需要注意的数字并不完全相等,但可能足够接近您正在做的事情。

有几种选择:

  • 存储两列,每列都是以逗号分隔的数字列表(中间是缺失系数的零)。把它们和内爆放在一起。
  • 存储一列,包含两个逗号分隔的列表,由一个/字符分隔.
  • 存储两个VARBINARY列,每个列长8×n字节(其中n是系数的数目)。这在C、Java或perl中很容易,在PHP中使用pack函数是容易的。
  • 存储一个VARBINARY列,格式化长度字节+数据+数据。再次使用pack函数。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33759214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档