【发布时间】:2018-03-08 05:24:39
【问题描述】:
我的 PHP 中有 2 个 SELECT 语句。两个选择语句都从两个不同的数据库中获取数据。获取的数据保存在 PDO Assoc Array 中。问题是当我想比较这两个数组以发现两个数组中是否存在列“id”时。如果存在则忽略它。如果它是唯一的 id,则将其保存到第三个数组中。但是我在下面的逻辑中发现了一些问题
在运行以下代码后,我遇到了几个错误: 1:数组到字符串的转换 2:重复键值违反唯一约束
$arr1 = $msql->fetchAll(PDO::FETCH_ASSOC);
$array1 = array();
foreach($arr1 as $x){
$array1[] = $x['id'];
}
$arr2 = $psql->fetechAll(PDO::FETCH_ASSOC);
$array2 = array();
foreach($arr2 as $y){
$array2[] = $y['id'];
}
$finalarray = array();
for ($i = 0; $i < count($arr1); $i++){
if(count(array_intersect($array1,$array2)) <= 1){// is the count of id is 1 or less save that whole row in the $finalarray
$finalarray = $arr1[$i]; // saving the unique row.
}
else{
continue;
}
}
在比较它们的 id 列之后,我正在尝试获取唯一的数据 array() 行。
【问题讨论】:
-
你问过类似的问题here,应该编辑同样的问题。请立即删除旧帖子
-
谢谢。
-
报错在哪一行?
-
@Gufran Hasan 修复后代码运行良好。但是当插入数据时数据库中已经存在重复而无法完全执行查询时,就会出现错误。
-
那么您应该在分配时防止
$array1、$array2中的重复条目或使用array_unique 到$finalarray
标签: php arrays associative-array