比较PHP中的两个数组并获得键的区别

冲洗重复

我一直在通读手册,以找到可以实现所需功能的函数,但最终还是自己完成了。我想比较两个数组并计算键之间的差异。或者更实际地分析值顺序的差异。

我已按照以下步骤进行操作,但是我觉得可以做得更好。

如果有人对如何改善此问题有任何想法,请立即告诉我,因为我渴望改善。

<?php
$goodarray = array(300,250,200,150,100);

$usersupliedarray = array(250,300,200,150,100); // first two spots are wrong

$score = count($goodarray);

foreach($usersupliedarray as $key => $value){

    $arraykey = array_search($value, $goodarray);

    $difference = abs($key-$arraykey);

    $score = $score + $difference;


    echo "$value $goodarray[$key] ($difference = $score) <hr />";

}
乔治

array_map 例如,使用无效的回调可以派上用场,

$a = array(300,250,200,150,100);
$b = array(250,300,200,150,100);

$faults = 0;
foreach(array_map(null, $a, $b) as $x)
    $faults += $x[0] != $x[1]; // x[0] is $a element, x[1] is $b

print $faults; // 2

UPD:如果您想计算相等元素之间的距离,而不仅仅是计算差异,那么您的原始代码对我来说就很好。可以进行的一项改进是摆脱效率低下的问题array_search,而使用第一个数组的“倒排索引”:

foreach($a as $pos => $val)
    $inv[$val] = $pos;

要不就

$inv = array_flip($a);

接着

foreach($b as $pos => $val)
    $score += abs($pos - $inv[$val]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

比较两个数组,然后在php中取消匹配

来自分类Dev

比较PHP中的两个数组

来自分类Dev

比较两个数组并获得相同值的数量

来自分类Dev

比较两个数组并在PHP中从数组中删除数组

来自分类Dev

比较两个数组

来自分类Dev

如何比较两个数组,并从PHP中的一个数组中删除数据?

来自分类Dev

如何在foreach中获得具有相同键的两个数组的和

来自分类Dev

在PHP中合并两个数组

来自分类Dev

比较两个数组中的位

来自分类Dev

比较JavaScript中的两个数组

来自分类Dev

PHP比较两个数组并获得差值

来自分类Dev

通过比较两个数组获得唯一值

来自分类Dev

比较两个数组

来自分类Dev

比较两个对象数组并获得Javascript的区别

来自分类Dev

Perl中两个数组的比较

来自分类Dev

如何比较两个数组并仅获得Mule 4中的公共值-Dataweave

来自分类Dev

比较两个数组,并显示第一个数组中具有第二个数组中的键的项

来自分类Dev

在PHP中合并两个数组?

来自分类Dev

在PHP中合并两个数组

来自分类Dev

PHP中的两个数组差异

来自分类Dev

比较Java中的两个数组

来自分类Dev

试图比较两个数组的PHP

来自分类Dev

通过键和值比较两个数组

来自分类Dev

在PHP中合并两个数组

来自分类Dev

比较两个数组中的元素

来自分类Dev

PHP比较两个数组并获得差值

来自分类Dev

通过比较两个数组基于索引映射键

来自分类Dev

在 PHP 中组合两个数组匹配键

来自分类Dev

Lazarus 中两个数组的比较