如何比较不同大小的数组

Posted

技术标签:

【中文标题】如何比较不同大小的数组【英文标题】:How to compare arrays with different sizes 【发布时间】:2014-06-10 16:30:48 【问题描述】:

我想比较 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>";

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

【问题讨论】:

你有foreach($bb as bbb),应该是foreach($bb as $bbb)。 那个错误是因为我把东西写在这里了,我现在放了,问候 您到底想比较什么(例如,实际数据和预期结果)?行为取决于您想对“多余”元素做什么。 检查计数并翻转你的等式 我有表单,这个表单发送值,在某些情况下,这个表单可以有 8 个字段,在其他情况下可以有 5 个,值保存在其他文本文件中,我总是有 10 个值,但只有我必须更改我想要的值,例如,如果我从表单发送 8 个值但只想更改我放入另一个数组中的值,我必须在两个数组中获得相同的值,另一个没有更改并继续使用相同的值 【参考方案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)
    

【讨论】:

是输入帖子值,是的

以上是关于如何比较不同大小的数组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用字符串为不同大小的数组设计结构?

如何同时访问两个大小不同的数组? [关闭]

如何将不同大小的numpy数组列表保存到磁盘?

从两个数组中区分额外的元素?

如何使用 Python Pandas 比较两个不同大小的数据集?

如何在java中将二维数组拆分为多个不同大小的二维数组