Php 如果两个数组相等,则检查单个值,但只打印一次值
我在数据库中有2个表Php 如果两个数组相等,则检查单个值,但只打印一次值,php,Php,我在数据库中有2个表 user=>1st col=>user_id=>[1,2,3], 2nd col=>user_name=>[a,b,c] image=> 1st col=>user_id=>[1,1,2,2,3],2nd col=>image_path=>[abc,sd,as,cd] 我的输出 我想这样输出 { user_id=1 user_name=a image_path=abc
user=>1st col=>user_id=>[1,2,3], 2nd col=>user_name=>[a,b,c]
image=>
1st col=>user_id=>[1,1,2,2,3],2nd col=>image_path=>[abc,sd,as,cd]
我的输出
我想这样输出
{ user_id=1
user_name=a
image_path=abc
sd}
{ user_id=2
user_name=b
image_path=as
cd} and so on....conti
我只需要userid一次就意味着不再重复同一个用户和上面的所有其他细节打印首先,您需要
将用户id
列上的表与用户上的JOIN image.user\u id=image.user\u id
连接,然后选择所需的列
然后使用array\u reduce
将所有图像路径收集到特定行的数组中:
$final = array_reduce($sqlResult, function($result, $row){
if (!array_key_exists($row['user_id'], $result) {
$result[$row['user_id']] = $row;
$result[$row['user_id']]['image_path'] = [$row['image_path']];
} else {
$result[$row['user_id']]['image_path'][] = $row['image_path'];
}
return $result;
}, []);
结果将是您所需的输出。您可以先通过array\u merge()
这样合并数组
$new_array = array_merge($arr1,$arr2);
$final_array = array_unique($new_array);
通过这种方法,您将获得两个数组的数组组合,然后需要通过array\u unique()
这样的方法使其唯一
$new_array = array_merge($arr1,$arr2);
$final_array = array_unique($new_array);
我希望有帮助
编辑::
哦,对不起,我误解了。
@菲利普·莫勒的回答是正确的。asarray\u intersect()
方法提供两个数组的公共值。
请参阅链接所有数组2的值都必须在数组1中?