如何比较不同大小的数组

时间:2014-06-10 16:30:48

标签: php arrays array-difference array-intersect

我想比较2个数组,除了两个数组有时可能有不同的大小。

例如,我有一个表单,我收到了这个值:

// The post send more values than other array:
//   name , email , password, phone , address
// but in other cases send only one value and the other array it's bigger
foreach($_POST as $key=>$value)
{    
    $fields_array[]=$key;    
}

另一方面,我有另外一个我要比较的阵列:

    $fields_compare=array("name","email");

在这种情况下,当名为$ fields_array的数组较大时,我不会遇到问题。但是,如果第二个数组较大,我就会遇到问题。

我继续这样做:

$aa=array_diff($fields_array,$fields_compare);
$bb=array_intersect($fields_array,$fields_compare);

foreach ($aa as $aaa)
{
    // Show the others different values, no show name and email
    print "".$aaa."<br>";
}

foreach ($bb as bbb)
{
    // Show the same Values in this case the same will be name and email ///
    print "".$bbb."<br>";
}

如果第一个数组较大,则所有这些都有效,但在其他情况下,它不起作用,并且没有显示真正的差异。

1 个答案:

答案 0 :(得分:0)

我不确定这是不是你想要的,但是当你循环POST值时只测试输入值类型呢?

$fields_compare=array("name" => true, "email" => true); //faster than in_array( );
foreach($_POST as $key=>$value)
{    
    if(isSet($fields_compare[$key]))
    {
        //do something (eg: save $value to text file)
    }
}