Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在数据库中存储巨大的数组_Php_Mysql_Arrays_Multidimensional Array - Fatal编程技术网

Php 在数据库中存储巨大的数组

Php 在数据库中存储巨大的数组,php,mysql,arrays,multidimensional-array,Php,Mysql,Arrays,Multidimensional Array,我在做一个图像处理项目。我使用php作为GUI,使用matlab作为算法,使用Mysql作为数据库。我现在有30000张图片存储在数据库中。我的matlab程序将为每个包含300个元素的图像生成3个数组。所以,我的问题是 是将matlab为所有图像生成的数组保存在单个txt文件中,还是为每个图像创建一个txt文件。哪种方法更容易检索数据并存储到数据库中 从txt文件复制数组并将其保存到数据库中有多难?这方面有没有标准流程 必须检索数组的元素以进行进一步计算。我们可以为此使用序列化和反序列化吗 我

我在做一个图像处理项目。我使用php作为GUI,使用matlab作为算法,使用Mysql作为数据库。我现在有30000张图片存储在数据库中。我的matlab程序将为每个包含300个元素的图像生成3个数组。所以,我的问题是

  • 是将matlab为所有图像生成的数组保存在单个txt文件中,还是为每个图像创建一个txt文件。哪种方法更容易检索数据并存储到数据库中
  • 从txt文件复制数组并将其保存到数据库中有多难?这方面有没有标准流程
  • 必须检索数组的元素以进行进一步计算。我们可以为此使用序列化和反序列化吗
  • 我必须一次比较两个数组元素,并从两个数组中获得具有最小值的第三个数组。例如A=[1 2 3 4]和B=[6 1 4 2]我必须比较这2个数组的每个元素,并生成第三个数组c=[1 3 2],它将数组的每个元素与另一个数组的相应元素进行比较,并将最小元素存储在第三个数组中。与1个固定阵列相比,数千个阵列重复此过程。有什么php函数可以做到这一点吗

  • 任何建议和帮助都是非常值得赞赏的。谢谢。

    仔细阅读您的问题,不管我怎么说,关系数据库对您来说会更好,如果性能不是一个大问题,那么SQL将是解决您问题的最佳语言,而不是在PHP级别。

    是的,PHP也有简单的方法来解决这些问题,尽管不像SQL那么简单。

    在这种情况下,最好的解决方案是创建一个单独的元表来存储与图像相关的数据(数组)

    以下是一个简单的EER示例:

    image\u id
    (引用外键)、
    array
    index
    的组合构成了元表的主键

    我假设您可以安全地将数组的键表示为0索引,并且数组的所有值也都是数字(这就是为什么所有字段的类型都是
    INT
    ,如果不是,请相应地调整数据类型)

    • 图像id
      表示链接的图像id
    • array
      表示特定的数组(您说最多3个数组,所以本列中的值可以是
      1-3
    • 索引
      是数组中的数字索引
    • 是与索引配对的数组中的值
    元表中的示例数据可能如下所示:

    image_id    |    array    |    index    |    value
    ------------------------------------------------------
    256         |    1        |    0        |    5
    256         |    1        |    1        |    9
    256         |    1        |    2        |    4
    256         |    1        |    3        |    23
    256         |    1        |    4        |    1
    256         |    2        |    0        |    9
    256         |    2        |    1        |    15
    256         |    2        |    2        |    8
    256         |    2        |    3        |    19
    256         |    2        |    4        |    11
    
    在上面的示例数据中,我们有两个数组(在
    数组
    列中,每个数组由
    1
    2
    表示),每个数组有5个元素(键在
    索引
    列中表示,值在
    列中表示)

    可以存储任意数量的数组,也可以存储任意数量的索引

    您还可以在MySQL中使用
    GROUP BY
    执行所需的数组比较计算。下面是如何找到image_id 256所有数组中每个键的最小值(假设有3个数组):

    选择索引,最小值(value)作为最小值
    来自图像_meta
    其中,image_id=256
    按索引分组
    
    由于在(
    image\u id
    array
    index
    )上设置了复合索引,因此这应该非常快


    此设计还允许您在每张图像上拥有可变数量的索引和数组。

    按照此网站的工作方式,您最好提出单个/原子问题。一个问题,一个最佳答案。如果您想要讨论,请使用聊天功能或PHPbuilder.com1。什么?2.很简单。3.是的,4.编写您自己的函数足够简单
    序列化
    是实现go@metal_fan实际上,如果他需要处理这些值,我不会序列化它们,我也会使用MySQL作为处理引擎,除非需要在这里进行扩展。