-3

私は3つの配列を持っています

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

これらの 3 つの配列は、フォーム内の 3 つの選択メニューからの値用であると仮定します。以下を実装したいと思います。

フォームが送信された場合、 の要素$arr_1が選択され、いずれかの要素が再度選択されると、3 つの配列からの要素の組み合わせはorまたはのいずれ$arr_2$arr_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;
}

$inArrayieの長さで証明できます

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

編集:

そして、すべての値が 1 つの配列からのものであるかどうかを証明するには:

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 に答える