-3

我有 3 个数组

$arr_1 = array('a','b','c');
$arr_2 = array('d','e','f');
$arr_3 = array('g','h','i');

假设这 3 个数组用于来自表单中 3 个选择菜单的值。我想实现以下。

如果提交了表单,如果选择了一个元素$arr_1并再次从其中一个元素中选择了任何元素,$arr_2或者$arr_3它会警告错误,您只能从 3 个数组中的一个$arr_1$arr_2$arr_3而不是混合元素中选择。

4

3 回答 3

2
$valid = array('a', 'b');
$invalid = array('a', 'd');

$arrays = array(
    '1' => array('a', 'b', 'c'),
    '2' => array('d', 'e', 'f'),
    '3' => array('g', 'h', 'i'),
);

foreach ($valid as $input) {
    $inArray = array();
    foreach ($arrays as $key => $array)
        if (in_array($input, $array))
            $inArray[] = $key;
}

foreach ($invalid as $input) {
    $numberOfArrays = array();
    foreach ($arrays as $key => $array)
        if (in_array($input, $array))
            $inArray[] = $key;
}

$inArray你可以用ie的长度来证明

if (length($inArray) === 1) { 
    echo 'Valid'; 
} else { 
    echo 'Invalid'; 
}

编辑:

并证明所有值是否来自一个数组:

if ((length($inArray) === 1) and (length($valid) === length($arrays['1']))) {
    echo 'Valid';
} else {
    echo 'Invalid';
}
于 2013-03-29T09:53:42.933 回答
1

你可以这样做

if($arr_1 && $arr_2 && $arr_3){

    alert("error ");

} else if ($arr_1 && $arr_2){

    alert("error");
} else {

   alert("good to go");

}
于 2013-03-29T09:52:34.297 回答
0

您只需要检查与选择菜单对应的表单值有多少与其默认值不同(不应在这些数组中):

<?php
$form_select = array('select1' => 'none','select2' => 'none','select3' => 'none');
if (count(array_intersect_assoc($_REQUEST, $form_select)) < count($form_select) - 1)
    display_error();
else
    process_form($_REQUEST);

其中$form_select包含不能一起使用的选择菜单的默认值。

对应的 html 如下所示:

 <form>
  <select name='select1'>
    <option value ='none' selected>none</option>
    <?php array_walk($arr_1, function ($v) { echo '<option value="'.$v.'">'.$v.'</option>'; }); ?>
  </select>
  <!-- etc. -->
于 2013-03-29T10:03:45.827 回答