微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 将数组项与数组中的其他项进行一次比较

我有一个PHP数组,其中有2-5个项目.

$z=["itema", "itemb", "itemc", "itemd","iteme"];

我需要有一种方法来遍历数组并将每个项目相互匹配一次.所以输出看起来像

itema vs itemb
itema vs itemc
itema vs itemd
itema vs iteme

itemb vs itemc
itemb vs itemd
itemb vs iteme

itemc vs itemd...ect 

我似乎无法获得循环来击中每个项目.我认为它必须是循环中的循环,因为我只有一个循环不起作用.

它必须只去一次.我很失落如何让它发挥作用.任何帮助将非常感激.

解决方法:

你可以使用两个for循环

$count = count($z);
for ($i = 0; $i < $count - 1; $i++) {
    for ($j = $i + 1; $j < $count; $j++) {
        // compare $z[$i] with $z[$j]...
    }
}

一个循环从0到n – 2,内循环将外部值作为初始值并转到结尾.

如果您还需要处理关联数组,就像提到的一个评论者那样,您可以使用array_values(和array_keys)来处理这种情况.

$values = array_values($z);
$keys = array_keys($z); // optional - only used, if you need the keys..
$count = count($values);
for ($i = 0; $i < $count - 1; $i++) {
    for ($j = $i + 1; $j < $count; $j++) {
        // compare $values[$i] with $values[$j]...
        // or $keys[$i] with $keys[$j];
    }
}

Note: A foreach loop won’t work in either case, because you can’t
told the inner loop to skip all values, already seen in the outher
loop. And teaching the foreach loop this behavior would result in a
foreach, that effectly looks like a simple for loop and is slower.
There’s simply no benefit in using a foreach.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐