gpt4 book ai didi

php - 使用php在MySQL数据库中保存不同大小的双数组

转载 作者:行者123 更新时间:2023-11-29 21:49:48 25 4
gpt4 key购买 nike

我正在尝试将有理函数的系数存储到 MySQL 5.5 数据库中。这是使用 PHP 5 完成的,我对此还很陌生。

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

存储在数据库中我只需比较函数是否相等。这意味着我只需要弄清楚两个数组是否具有相同的系数(顺序无关紧要)。例如。 [1,2,3] 和 [3,1,2] 相同。

由于 MySQL 不提供直接保存数组的功能,我不确定如何以最佳方式完成此任务。

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

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

这引起了我的问题,这种方法有效还是有更好的方法?

最佳答案

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

如果您只是检查相等性,则只需转换为某种规范的字符串表示形式,并将其保存在数据库中。较短的表示更有利于空间使用,但使其仍然易于人类阅读也很好,因为这应该有助于临时查询和调试。

请注意,顺序对于 rational function 可能确实很重要。另外,如果您正在处理 floating-point ,您需要注意那些不完全相等但可能足够接近您正在做的事情的数字。

几个选项:

  • 存储两列,每列都是以逗号分隔的数字列表(中间用零表示缺失系数)。将它们放在一起 implode .
  • 存储一列,其中包含两个以 / 字符分隔的逗号分隔列表。
  • 存储两个 VARBINARY 列,每列 8 × n 字节长(其中 n 是系数的数量)。这在 C 或 Java 或 Perl 中很容易,在 PHP 中使用 pack功能。
  • 存储一个 VARBINARY 列,格式为 长度字节 + 数据 + 数据。再次使用pack函数。

关于php - 使用php在MySQL数据库中保存不同大小的双数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33759214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com