1

2 つの配列があり、2 つの配列が互いに一致したときに TRUE または FALSE を返す必要があります。また、順序付けされていない配列は、結果が一致した場合に TRUE を返す必要がありますが、両方の配列が同じ値を持つ場合にのみ true を返す必要があります。

//This should return TRUE
$array_One = array('test1', 'test2', 'test3');
$array_Two = array('test1', 'test2', 'test3');

//This should return TRUE
$array_One = array('test1', 'test2', 'test3');
$array_Two = array('test1', 'test3', 'test2');

//This should return TRUE
$array_One = array('test1', 'test2', 'test3');
$array_Two = array('test1', 'test3', 'test2');

//This should return FALSE
$array_One = array('test1', 'test2', 'test3');
$array_Two = array('test1', 'test2');

foreach を使用して array_key_exists を含むいくつかの方法を試しましたが、期待どおりの結果が返されませんでした。配列が一致した場合、これは TRUE または FALSE を 1 つだけ返す必要があります。

4

5 に答える 5

3

http://php.net/manual/en/function.array-diff.php

2 つの配列の値が (キーと順序に関係なく) まったく同じかどうかを知りたいだけの場合は、array_diff を使用する代わりに、次の簡単な方法を使用できます。

<?php

function identical_values( $arrayA , $arrayB ) {

    sort( $arrayA );
    sort( $arrayB );

    return $arrayA == $arrayB;
}

// Examples:

$array1 = array( "red" , "green" , "blue" );
$array2 = array( "green" , "red" , "blue" );
$array3 = array( "red" , "green" , "blue" , "yellow" );
$array4 = array( "red" , "yellow" , "blue" );
$array5 = array( "x" => "red" , "y" =>  "green" , "z" => "blue" );

identical_values( $array1 , $array2 );  // true
identical_values( $array1 , $array3 );  // false
identical_values( $array1 , $array4 );  // false
identical_values( $array1 , $array5 );  // true

?> 
于 2012-12-10T13:37:04.810 に答える
1
$array_One = array('test1', 'test2', 'test3');
$array_Two = array('test1', 'test3', 'test2');

if (array_diff($array_One, $array_Two))
{
    // there is a difference
    echo 'FALSE';
}
else
{
    // the arrays match
    echo 'TRUE';
}
于 2012-12-10T13:42:13.030 に答える
1

function arraycomp( $array1, $array2 ) {
   $diff1 = array_values( $array1 );
   $diff2 = array_values( $array2 );

   sort( $diff1 );
   sort( $diff2 );

   return ( $diff1 === $diff2 );

}

2つの配列をその関数に渡すだけです。

于 2012-12-10T13:44:00.087 に答える
1

配列のサイズを比較したい場合は、以下を使用できますcount

if ( count ( $array1 ) == count ( $array2 )) 
{ 
     MATCH! 
} 
else 
{ 
     NO MATCH! 
}
于 2012-12-10T13:40:28.747 に答える
-1

これはあなたのために働くはずです:

sort($array1);
reset($array1);
sort($array2);
reset($array2);
$res = array_diff($array1, $array2);

if($res)
    echo "they match";
于 2012-12-10T13:38:07.863 に答える