如何跟踪变量值是否在同一个php while循环中多次使用

时间:2016-06-10 18:19:17

标签: php

我在一个不同的问题和答案中找到了这个片段,它检测变量值是否与前一个循环中的变量值相同。

$prevValue = NULL;
while(condition) {
 if ($curValue == $prevValue) {
  //do stuff
 }
 $prevValue = $curValue;
}

但是我要做的是检查变量值是否在循环之前使用过,但是循环中的任何地方,所以如果值发生在1或2或10循环前我想让它告诉我是否变量值之前已经过了循环。

3 个答案:

答案 0 :(得分:6)

制作一组previouse值并通过in_array函数进行测试

$prevValue = [];
while(condition) {
 if (in_array($curValue, $prevValue)) {
  //do stuff
 }
 $prevValue[] = $curValue;
}

答案 1 :(得分:2)

使用数组存储每个值,然后检查当前值是否在数组中:

$prevValues = array();
while(/*condition*/) {
    if (in_array($curValue, $prevValues)) {
        //do stuff
    }
    $prevValues[] = $curValue;
}

正如Marc B在评论中指出的那样,你也可以这样做。它可能稍微快一些,但我没有测试过它:

while(/*condition*/) {
    if (isset($prevValues[$curValue])) {
        //do stuff
    }
    $prevValues[$curValue] = 1;  //set to whatever
}

答案 2 :(得分:1)

如果您只想打印出唯一值,请使用array_unique。 这是一个例子:

//This should output 2 3 1 4
$arr = array(2, 3, 2, 1, 4, 4);
foreach(array_unique($arr) as $value){
    echo $value;
}