gpt4 book ai didi

php - 如何在 php 或使用 MySQL 中解决 'array overflow'?

转载 作者:可可西里 更新时间:2023-11-01 08:29:50 24 4
gpt4 key购买 nike

在问题之前,How to using php to get unique word pair(string) and insert into mysql table应该先阅读

例如:如果我们有 dog cat 对,我们将看不到 cat dog

作为@pala_的建议,这是我的代码

 $sql= "INSERT INTO EM (source,target) VALUES ";

$res = array();
foreach($combine_words_array as $v1) {
foreach($combine_words_array as $v2) {
$t = array($v1, $v2);
asort($t);
if(!in_array($t, $res)){
$res[] = $t;
$sql.="('$t[0]','$t[1]'),";
mysql_query(substr($sql,0,-1));
}
}
}

问题出现了,这个数组必须非常大,MySQL 插入停止在 540000行,有什么想法可以使用动态数组或与 MySQL 代码一起使用吗?

最佳答案

我仍然认为你应该在 SQL 中保持这样的逻辑:

SELECT t1.column AS source, t2.column AS target FROM input_table t1
INNER JOIN input_table t2 ON t1.column < t2.column

这应该为您提供所有唯一配对,并且应该比在 PHP 中使用 in_array 测试获得唯一配对更快。如果数据已经在 PHP 中而不是在 MySQL 中,您可以将其 540000 行插入到临时表中,然后运行类似上面的操作以获取您感兴趣的对。数据库适用于set 操作,PHP 绝对不是。

如果您坚持按照您正在做的方式构建数组并将其全部保存在 PHP 内存中,您应该运行 mysql_query(substr($sql,0,-1)); 行仅当您达到行数限制或已结束外循环时。此时您可以将 $sql 字符串重置为

$sql= "INSERT INTO EM (source,target) VALUES ";

再次开始构建剩余的部分,就像您到现在为止所做的那样。冲洗并重复直到完成或 PHP 进程内存不足 =)

关于php - 如何在 php 或使用 MySQL 中解决 'array overflow'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30022998/

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