检查forreach循环中变量值的变化


Check for a change in variable value in forreach loop

所以我有一个复选框发送到PHP脚本。基本上,我的复选框创建了一个数组。这是一个$var[]

基本上,我的数组在代码中是这样的:

$vars = array('12345:0','45678:0','78910:0','3434:1','2345:1');
foreach ($vars as $var) {
    $vinfo = explode(":", $var);
    $vgroup = $vinfo[0];
    $vacct = $vinfo[1];
    // Various function calls with those variables. 
}

现在,如你所见。我是分裂的vinfo和vaccount。在我的来源。我有两个账户(在这个例子中)。有些组属于0,有些组属于1。我想运行switchAccount("details");函数只要在foreach循环中$vacct变量有变化。在这种情况下,它应该只切换一次(因为0是默认值)。

"Account"($vacct)开关根据用户在复选框中的输入而变化。但(通常)总是上升一个数字。同样,这取决于管理输入。

试试这个

$vars = array('12345:0','45678:0','78910:0','3434:1','2345:1');
$vacct = '';
foreach ($vars as $var)
{
    $vinfo = explode(":", $var);
    $vgroup = $vinfo[0];
    if($vacct != $vinfo[1])
    {
        switchAccount("details");
        $vacct = $vinfo[1];
    }
}

我已经将您的foreach替换为正常的for,因此您可以获得"先前"迭代的信息。这样你就可以检查$vacct是否发生了变化。

for($i = 0; $i < count($vars); $i++){
    $vinfo = explode(":", $vars[$i]);
    $vgroup = $vinfo[0];
    $vacct = $vinfo[1];
    if($i > 0){ //Make sure we don't get a -1 index
        $previous = $vars[$i - 1]; //Get previous info
        $previous_info = explode(':', $previous);
        $previous_vacct = $previous_info[1];
        if($previous_vacct != $vacct){
            //Do switching function
        }
    }
}