合并两个数组

时间:2011-02-19 03:01:50

标签: php mysql

我在两个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
    }
}

我有什么问题吗?请帮忙。我现在已经有一段时间了。

1 个答案:

答案 0 :(得分:2)

这是一个合并数组的单行程序:

$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子句。
  • 首先将序列化数组存储在数据库表的列中通常是一件错误的事情。