如何制作一个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">
答案 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”
希望有所帮助