如何在php中匹配两个数组中的键值

时间:2014-06-24 08:45:02

标签: php arrays

我有两个arrays

       Array
        (
            [0] => Array
                (
                    [id] => 1
                    [affiliate_id] => 190
                )

            [1] => Array
                (
                    [id] => 2
                    [affiliate_id] => 946
                )

        )




        Array
        (
            [0] => Array
                (
                    [id] => 1
                    [user_id] => 190
                )

            [1] => Array
                (
                    [id] => 2
                    [user_id] => 246
                )

            [2] => Array
                (
                    [id] => 3
                    [user_id] => 249
                )
            [3] => Array
                (
                    [id] => 3
                    [user_id] => 250
                )

        )

现在我想得到一个有这样价值的数组

如果第一个数组的affiliate_id存在于第二个数组中user_id那么我将在第三个数组中得到它的值,如

    Array
        (
            [0] => Array
                (

                    [affiliate_id] => 190
                )
        )

我只想将affiliate_id作为user_id

存在于第二个数组中

3 个答案:

答案 0 :(得分:1)

$a = Array(
    Array('id' => 1, 'affiliate_id' => 190),
    Array('id' => 2, 'affiliate_id' => 946)
);

$b = Array(
    Array('id' => 1, 'user_id' => 190),
    Array('id' => 2, 'user_id' => 246),
    Array('id' => 3, 'user_id' => 249),
    Array('id' => 3, 'user_id' => 250)
);

$c = array_map(function ($arr) { return $arr['affiliate_id']; }, $a);
$d = array_map(function ($arr) { return $arr['user_id']; }, $b);

$e = array_intersect($c, $d);

print_r($e);

答案 1 :(得分:0)

使用循环

尝试in_array()
$a = firstarray;
$b = second array;
$i =0;
foreach($b as $k=>$v) {
 if(!empty($a[$i])) {
      if(in_array($v['user_id'], $a[$i])) {
        $c[]['affiliate_id'] = $v['user_id'];
      }
  }
  $i++;
}
print_r($c);

输出: -

Array
(
    [0] => Array
        (
            [affiliate_id] => 190
        )

)

答案 2 :(得分:0)

使用以下代码:

<?php

$arr1 = array(array('id' => 1, 'affiliate_id' => 190),
              array('id' => 2, 'affiliate_id' => 946));

$arr2 = array(array('id' => 1, 'user_id' => 190),
              array('id' => 2, 'user_id' => 246),
              array('id' => 3, 'user_id' => 249),
              array('id' => 4, 'user_id' => 250));

$count = 0;

foreach ($arr1 as $k1 => $v1) {
    if (in_array($v1['affiliate_id'], $arr2[$count]))
    {
        $arr3[]['affiliate_id'] = $v1['affiliate_id'];
    }
    $count++;
}

echo '<pre>'; print_r($arr3);

<强>输出

Array
(
    [0] => Array
        (
            [affiliate_id] => 190
        )
)