我在数据库中有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
我只想要用户ID一次意味着不再重复相同的用户和所有其他细节打印如上
答案 0 :(得分:2)
首先,您需要在JOIN
列user_id
上JOIN image ON user.user_id = image.user_id
并array_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;
}, []);
将所有图像pathes收集到特定行的数组中:
class ApplicationController < ActionController::Base
def index
@collection = model
end
end
结果将是您想要的输出。
答案 1 :(得分:0)
您可以先按array_merge()
这样合并数组,
$new_array = array_merge($arr1,$arr2);
通过这个你将得到两个数组的数组组合,然后你需要通过这样的array_unique()
方法使其唯一,
$final_array = array_unique($new_array);
我希望它有所帮助。
编辑::
哦,我很抱歉我误会了。
@Philipp Maurer的回答是正确的。因为array_intersect()
方法为您提供了两个数组的公共值。
请参阅链接array-intersect