使用for循环区分匹配变量

时间:2013-03-25 21:12:22

标签: php logic

如何制作一个for循环来比较这样的变量(任何语言真的,但专门针对php):

假设我有var1 var2 var3,如果两个值相同,我想要一个动作。

这就是我所拥有的,但显然它不起作用,因为var1总是等于var1,var2总是等于var2等。

<?php for ($i = 1; $i <= 10; ++$i) { 
if (${'var'.$i} == ${'var'.$i}) {
// if match do something
}
else {
do something
}

尝试使用array_unique。

<?php
for ($i = 1; $i <= $number_of_seats; ++$i) {
$choices = array_unique(array("${'selected_seat'.$i}"));
if (count(${'selected_seat'.$i}) !== count($choices)) {
    echo 'action="fail.php"';
} 
else {
        echo 'action="success.php"';
        }
}

        ?> method="post">

1 个答案:

答案 0 :(得分:0)

编写两个循环可以工作,但它会产生一个O(n ^ 2)算法。

您可以先对变量数组进行排序,然后遍历它,看看是否有两个连续值相等。这产生了O(nlogn)算法。

或者你可以使用HastTable以更多的编程时间来获得O(n)算法。

[编辑]

由于效率不是问题,最简单的方法是进行双重循环:

<?php
for ($i = 1; $i <= 10; ++$i)
{ 
    for ($j = i+1; $j <= 10; ++$j)
    { 
        if (${'var'.$i} == ${'var'.$j})
        {
            // if match do something
        }
    }
}
?>

请注意,此时你不应该有别的。

在这段代码中,我正在做的是将[var1,var2,...]中的每个元素与其右边的元素进行比较。也就是说,我将var1与var2进行比较,然后将其与var3进行比较,依此类推......

另请注意,您可以将第一个终止更改为“i&lt; = 9”

希望有所帮助