php array_intersect显示没有交集

时间:2012-08-27 21:53:12

标签: php arrays array-intersect

我有两个数组$ t1和$ t2。当我打印出来时,我得到以下内容:

T1:

Array ( [0] => Christina Aguilera [1] => Iron Maiden [2] => Bob Marley ) 

T2:

Array ( [0] => Bob Marley )

我正在尝试通过array_intersect函数获取数组的公共元素,我正在使用以下行:

$intersection = array_intersect($t1,$t2);

但是,出于某种原因,当我打印结果$ intersection时,我得到:

Array ( )

有人能看出它出了什么问题吗?我的功能代码如下,但我认为上述内容应足以解决问题。

// For extra information
function findMutualInterests($_uProArray, $_tProArray)
{
    $_commonDetails = null;

    $_fieldNames = array_keys($_uProArray[0]);
    $_uProValues = array_values($_uProArray[0]);
    $_tProValues = array_values($_tProArray[0]);
    //print_r($_uProValues);

    // Iterate over the arrays and find ones in common
    for ($i = 0; $i < count($_uProValues); $i++) {
        $t1 = explode(',',$_uProValues[$i]);
        print_r($t1);
        $t2 = explode(',',$_tProValues[$i]);
        print_r($t2);
        $intersection = array_intersect($t1,$t2);
        print_r($intersection);
        $_commonDetails[$_fieldNames[$i]] = implode($intersection);
    }
    return $_commonDetails;
}

编辑:我想我会指出上面显示的$ t1和$ t2的输出是以下函数的单次迭代的输出。我只是选择那个作为例子。

4 个答案:

答案 0 :(得分:2)

Your code works fine,尝试修剪输入字符串。

答案 1 :(得分:1)

你的代码有一个很大的错误。 如果$_tProValues中的元素多于$_uProValues中的元素,则不会测试$_tProValues数组中的所有可能性。那么你将无法测试所有可能性。这里发生的是,你没有测试所有可能性。

答案 2 :(得分:0)

检查上面的评论,因为这很好用:

<?php

$a = array (
        0 => 'Christina Aguilera',
        1 => 'Iron Maiden',
        2 => 'Bob Marley'
    );

$b = array (
        0 => 'Bob Marley'
    );

$intersect = array_intersect( $a, $b );

print_r( $intersect );

?>

输出:

Array
(
    [2] => Bob Marley
)

答案 3 :(得分:0)

**Check the code it is very useful for you ,because this works fine:**

$final_arr = [];
foreach ($a as $a_val) {
      foreach ($b as $b_val) {
        if(in_array(strtolower($a), array_map('strtolower', $b_val))){
            $final_arr[] = $b_val; 
            }
       }
    }