Php 基于数组的上一个值比较数组

Php 基于数组的上一个值比较数组,php,arrays,Php,Arrays,我有一个如下所示的数组: Array ( [0] => Array ( [START] => COI-COK [RETURN] => CAI - DEL ) [1] => Array ( [START] => COK - AMM [RETURN] => CAI - DEL ) ) 我想检查上一个数组和当前数组的“开始”和“结束”值是否相同。如果

我有一个如下所示的数组:

Array ( 
    [0] => Array (  
        [START] => COI-COK 
        [RETURN] => CAI - DEL 
    ) 
    [1] => Array ( 
        [START] => COK - AMM 
        [RETURN] => CAI - DEL 
    ) 
)
我想检查上一个数组和当前数组的“开始”和“结束”值是否相同。如果没有,则打印一些值。我怎么做

这是我的尝试:

foreach($data as $datas)
{     
    $old_start  = $datas['START'];
    $old_return = $datas['RETURN'];

    ...

    if( ($old_start == $datas['START']) && ($old_return == $datas['RETURN']))
    {

    }
    else
    {

    }
}
但它不起作用,因为所有时间
old\u start
值都将等于
$datas['start']

打印($data)
显示此输出:

Array ( 
    [0] => Array ( 
        [Sl] => 2 
        [TRAVELDAY] => 2015-11-11 
        [RETURNDAY] => 2015-11-27 
        [START] => COI-COK 
        [RETURN] => CAI - DEL 
    ) 
    [1] => Array ( 
        [Sl] => 1 
        [TRAVELDAY] => 2015-11-11 
        [RETURNDAY] => 2015-11-27 
        [START] => COK - AMM 
        [RETURN] => CAI - DEL 
    ) 
)

您必须将作业放在比较之后,而不是之前:

$old_start = '';
$old_return = '';
foreach($data as $datas)
{     
     //....
     if($old_start=='' || $old_start == $datas['START'] && $old_return == $datas['RETURN'])
     {
         //....
     }
     else
     {
         //code to be executed
     }

     $old_start = $datas['START'];
     $old_return = $datas['RETURN'];
}

您必须将作业放在比较之后,而不是之前:

$old_start = '';
$old_return = '';
foreach($data as $datas)
{     
     //....
     if($old_start=='' || $old_start == $datas['START'] && $old_return == $datas['RETURN'])
     {
         //....
     }
     else
     {
         //code to be executed
     }

     $old_start = $datas['START'];
     $old_return = $datas['RETURN'];
}
像这样试试

$old_start = "";
$old_return = "";

foreach($data as $datas)
{     

    if( ($old_start == $datas['START']) && ($old_return == $datas['RETURN']))
    {
        //true code to be executed
    }
    else
    {
        //false code to be executed
    }

    $old_start = $datas['START'];
    $old_return = $datas['RETURN'];
}
像这样试试

$old_start = "";
$old_return = "";

foreach($data as $datas)
{     

    if( ($old_start == $datas['START']) && ($old_return == $datas['RETURN']))
    {
        //true code to be executed
    }
    else
    {
        //false code to be executed
    }

    $old_start = $datas['START'];
    $old_return = $datas['RETURN'];
}
希望这会清除您的逻辑,添加您想要的数组值,我将您的数组从2修改为3以显示差异。这将比较n与n+1并显示结果



希望这会清除您的逻辑,添加您想要的数组值,我将您的数组从2修改为3以显示差异。这将比较n与n+1并显示结果

$old\u start
不会在循环内初始化-这只会抛出一个未定义的变量错误。@AmalMurali如果您能看到编辑历史记录,您将看到我在您发布评论之前编辑了它。谢谢你的建设性否决票。@A代码是否在else路径中?你只需要检查一下,例如
$old\u start=''
@syck:显然是的,我取消了我的否决票,并将其改为赞成票。@AjithN编辑了代码,这样它就不会在第一个循环中触发。
$old\u start
不会在循环中初始化-这只会抛出一个未定义的变量错误。@AmalMurali如果你能看到编辑历史,你会看到我在你发表评论之前编辑了它。谢谢你的建设性否决票。@A代码是否在else路径中?你只需要检查一下,例如
$old\u start=''
@syck:显然是的,我取消了我的下一票,将其改为上一票。@Ajith编辑了代码,这样它就不会在第一个循环中触发。$data的输出就是我给出的数组。您总是只有两个数组可以比较吗?它不是两个数组,它只有一个数组具有多个值Hanks brother@AmalMurali@AjithN:没问题;今后,请务必将您的问题编排整齐。提示:您可以添加
标题('Content-Type:text/plain;charset=utf8')
在脚本的最顶端,以查看实际生成的输出。$data的输出是我提供的数组您是否总是只有两个数组可供比较?它不是两个数组,它只有一个数组具有多个值Hanks brother@AmalMurali@AjithN:没问题;今后,请务必将您的问题编排整齐。提示:您可以添加
标题('Content-Type:text/plain;charset=utf8')显示在脚本的最顶端,以查看实际生成的输出。对于0键数组,这将变为false。不进行测试。对于0键数组,这将变为false。这是不需要测试的。