我在两个MYSQL表中有两个数组。我想遍历第一个数组(array1),如果第二个数组(array2)中存在一个值,请跳过第二个数组(array2)中的值,然后继续检查。如果不存在,请将其添加到第二个数组(array2)。
一个例子:
array1 = 1,2,3,4,5
array2 = 2,4,6,8,10
因此,我们遍历array1以检查array2中是否存在元素。如果未将其添加到数组2中。因此,array2的新值应为:
array2= 1,2,3,4,5,6,8,10
这是我所做的,但是没有用。它将删除array2的所有值并添加新值。它不会忽略通用值。请帮忙。
$array1= explode(",", $results1);
$array2= explode(",", $results2);
foreach($array1 as $key => $value) {
if (in_array($value, $array2)) {
if ($results2 != "") {
$results2= "$results2,$value";
} else { $results2= "$value"; }
mysql_query("UPDATE datas SET results2 ='$results2'
WHERE r2_id ='$r2_id'")
or die ("Died".mysql_error());
} else {
//Do nothing
}
}
我做错了什么吗?请帮忙。我来这已经有一段时间了。
最佳答案
这是合并数组的单线:
$merged = array_unique(array_merge(explode(",", $results1), explode(",", $results2)));
$string = implode(",", $merged);
mysql_query("UPDATE datas SET results2 = '$string' WHERE r2_id = $r2_id") or die("Died ".mysql_error());
至于您在做什么错,因为您问过:
您的第一个条件是倒退。如果该值已经在数组2中,则您什么也不做,而是在缺少该值并应添加时什么也不做。
当连接会更简洁(更易于阅读且更容易犯未引起注意的错误)时,您会大量使用双引号字符串。
在构建整个字符串之后,每次只需要更新一次
$results2
时,便会发出UPDATE查询。您引用查询中似乎是数值的值($ r2_id)。 MySQL不会抱怨它,但是当从字符串到数字的隐式转换未产生预期的结果时,您可能会感到惊讶。
如果其中没有任何内容,则不需要else子句。
首先,将序列化数组存储在数据库表的列中通常是错误的做法。