我在一个不同的问题和答案中找到了这个片段,它检测变量值是否与前一个循环中的变量值相同。
$prevValue = NULL;
while(condition) {
if ($curValue == $prevValue) {
//do stuff
}
$prevValue = $curValue;
}
但是我要做的是检查变量值是否在循环之前使用过,但是循环中的任何地方,所以如果值发生在1或2或10循环前我想让它告诉我是否变量值之前已经过了循环。
答案 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;
}