php关联数组:比较相邻值

问题描述 投票:0回答:1

我想检查表单中相同2个输入字段的许多行。如果一个为空而另一个为非,则验证将失败。

我已经基于表单中的几个输入字段(e_me_id,e_md_number,e_md_id1,e_md_number1,p_me_id,p_md_number ...)创建了一个关联数组。

$pattern='(md_number|me_id)';
foreach($_POST as $field => $value) {
    $success = preg_match($pattern, $field);
    if ($success) {

        $validate += [$field => $value];
        }   
}

 result of validate =(
[e_me_id] => 1 
[e_md_number] => 111 
[e_me_id2] => 2 
[e_md_number2] => 222 
[p_me_id] => 10 
[p_md_number] => 101010 
[f_me_id] => 16 
[f_md_number] => 161616 
[d_me_id] => 18 
[d_md_number] => 181818 )

我需要一些循环的PHP来检查第一/第二个都为null还是都被填充了……对于第三/第四,第五/第六...等,等等。

我尝试使用prev($ validate)和next($ validate),但无法正常工作。

任何想法或其他方法。

提前感谢。

php
1个回答
0
投票

您可以执行此操作来验证对:

// assuming this the array generated by your code ...
$tst= array("e_me_id" => 1,"e_md_number" => 111 ,
            "e_me_id2" => 2,"e_md_number2" => 222 ,
            "p_me_id" => 0,"p_md_number" => 101010 ,
            "f_me_id" => 16,"f_md_number" => 161616 ,
            "d_me_id" => 0,"d_md_number" => 0 );
// then this will do the validation of pairs:
$keys=array_keys($tst);
for ($i=0;$i<count($tst);$i+=2) 
  echo "$keys[$i] and "
    .$keys[$i+1]
    .(empty($tst[$keys[$i]]) == empty($tst[$keys[$i+1]])?'':' DO NOT')
    ." pass the validation.\n";

您可以在此处查看演示:https://rextester.com/VEMUFJ14979我更改了一些数字以演示不同的情况。

[两个==测试之间的empty()实际上非常类似于@Markus Zeller建议的xor运算符。

© www.soinside.com 2019 - 2024. All rights reserved.