Как сравнить массивы с разными размерами
Я хочу сравнить 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)
}
}