如果2个数组是单独的值检查但是打印值只有一次

时间:2018-01-03 10:07:21

标签: 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
               sd}

   { user_id=2
    user_name=b
    image_path=as
               cd} and so on....conti

我只想要用户ID一次意味着不再重复相同的用户和所有其他细节打印如上

2 个答案:

答案 0 :(得分:2)

首先,您需要在JOINuser_idJOIN image ON user.user_id = image.user_idarray_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