Php 如果两个数组相等,则检查单个值,但只打印一次值

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

我在数据库中有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
               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);
我希望有帮助

编辑::

哦,对不起,我误解了。 @菲利普·莫勒的回答是正确的。as
array\u intersect()
方法提供两个数组的公共值。
请参阅链接

所有数组2的值都必须在数组1中?