Как сравнить массивы с разными размерами

Я хочу сравнить 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 ответ

Я не уверен, что это то, что вам нужно, но как насчет того, чтобы просто проверять типы входных значений, когда вы просматриваете значения 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)
    }
}
Другие вопросы по тегам