1

$t1 と $t2 の 2 つの配列があります。それらを印刷すると、次のようになります。

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 の出力は、以下の関数の 1 回の反復の出力であることを指摘しておきます。例としてそれを選んだだけです。

4

4 に答える 4

2

あなたのコードは正常に動作します。入力文字列をトリミングしてみてください。

于 2012-08-27T22:10:16.573 に答える
1

あなたのコードには大きな間違いがあります。$_tProValuesよりも多くの要素がある場合、配列$_uProValues内のすべての可能性をテストすることはできません。$_tProValuesその場合、すべての可能性をテストすることはできません。ここで起こることは、すべての可能性をテストしていないということです。

于 2012-08-27T22:08:35.687 に答える
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
)
于 2012-08-27T22:08:37.230 に答える