Php 如何从其他阵列中仅选择一个阵列

Php 如何从其他阵列中仅选择一个阵列,php,arrays,Php,Arrays,我有3个数组 $arr_1 = array('a','b','c'); $arr_2 = array('d','e','f'); $arr_3 = array('g','h','i'); 假设这3个数组用于表单中3个选择菜单的值。我想实现以下内容 如果提交了表格,如果选择了$arr\u 1中的一个元素,并且再次从$arr\u 2或$arr\u 3中选择了任何元素,则会提示错误,您只能从$arr\u 1或$arr\u 2或$arr\u 3中选择,而不能从3个数组中选择元素的混合。您可以像这样做

我有3个数组

$arr_1 = array('a','b','c');
$arr_2 = array('d','e','f');
$arr_3 = array('g','h','i');
假设这3个数组用于表单中3个选择菜单的值。我想实现以下内容

如果提交了表格,如果选择了
$arr\u 1
中的一个元素,并且再次从
$arr\u 2
$arr\u 3
中选择了任何元素,则会提示错误,您只能从
$arr\u 1
$arr\u 2
$arr\u 3
中选择,而不能从3个数组中选择元素的混合。

您可以像这样做

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

    alert("error ");

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

    alert("error");
} else {

   alert("good to go");

}
您可以使用
$inArray
的长度进行证明,即

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

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

if ((length($inArray) === 1) and (length($valid) === length($arrays['1']))) {
    echo 'Valid';
} else {
    echo 'Invalid';
}

您只需检查与选择菜单对应的表单值与其默认值(不应在这些数组中)之间的差异:


到目前为止你试过什么?告诉我你的逻辑和代码,关于你的$valid和$invalid;唯一有效的组合是只选择了$arr_1中的元素或$arr_2或$arr_3中的元素,而不是$arr_1、$arr_2和$arr_3中的任何元素。因此,您要检查是否所有值(“a、b、c”或“d、e、f”)都不是只选择一个?是的。正如我上面提出的问题。谢谢你的回答。我已经解决了所有HTML问题。我只需要检查最后一个PHP错误,然后处理表单。正如我上面解释的,我有3个选择菜单,不需要一次选择全部3个字段。一旦从选择菜单A中选择,则无需从选择菜单B或C中选择。如果同时选择了选择A和或选择B或C中的值,我想打印一个错误。哦,对不起。我认为我必须写整个东西,因为你没有给出你已经拥有的html或php的指示。我的错。我正在尝试一种基于你的代码的变通方法。如果我的解决办法奏效,我会马上通知你。谢谢你的回复。假设我有包含文本框而不是只选择菜单,我如何实现这个解决方案?对不起,我不明白。你有文本框或选择菜单吗?
if ((length($inArray) === 1) and (length($valid) === length($arrays['1']))) {
    echo 'Valid';
} else {
    echo 'Invalid';
}
<?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 name='select1'>
    <option value ='none' selected>none</option>
    <?php array_walk($arr_1, function ($v) { echo '<option value="'.$v.'">'.$v.'</option>'; }); ?>
  </select>
  <!-- etc. -->