我有2个arrrays,当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。
答案 0 :(得分:3)
http://php.net/manual/en/function.array-diff.php
如果你只需要知道两个数组的值是否完全相同(无论键和顺序如何),那么这是一个简单的方法,而不是使用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
?>
答案 1 :(得分:1)
如果要比较数组的大小,可以使用count
:
if ( count ( $array1 ) == count ( $array2 ))
{
MATCH!
}
else
{
NO MATCH!
}
答案 2 :(得分: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';
}
答案 3 :(得分:1)
function arraycomp( $array1, $array2 ) {
$diff1 = array_values( $array1 );
$diff2 = array_values( $array2 );
sort( $diff1 );
sort( $diff2 );
return ( $diff1 === $diff2 );
}
只需将两个数组传递给该函数即可。
答案 4 :(得分:-1)
这应该适合你:
sort($array1);
reset($array1);
sort($array2);
reset($array2);
$res = array_diff($array1, $array2);
if($res)
echo "they match";