Проверить несколько значений из флажка в PHP

У меня есть такая форма:

<form action = "" method = "post">
<input type = "checkbox" name = "check_list[]" value = "0" id = "check_list">- 0<br>
<input type = "checkbox" name = "check_list[]" value = "1" id = "check_list">- 1<br>
<input type = "checkbox" name = "check_list[]" value = "2" id = "check_list">- 2<br>
<input type = "checkbox" name = "check_list[]" value = "3" id = "check_list">- 3<br>
<input type = "checkbox" name = "check_list[]" value = "4" id = "check_list">- 4<br>
<input type = "checkbox" name = "check_list[]" value = "5" id = "check_list">- 5<br>
<input type = "checkbox" name = "check_list[]" value = "6" id = "check_list">- 6<br>
<input type = "checkbox" name = "check_list[]" value = "7" id = "check_list">- 7<br><br>
<input type = "submit" name = "submit" Value = "Submit"/>
</form>

Теперь я не буду проверять результат этой формы, если результат имеет (2,3,6), нам нужно что-то сделать, и если результат имеет значение (2,3), нам нужно что-то сделать, и если результат имеет значение ( 2) нам нужно что-то сделать, и если результат имеет значение (3), нам нужно что-то сделать, а если результат имеет значение (6), нам нужно что-то сделать,

Как это сделать в php?

Я пробую это, но у меня не получается

if (!empty($_POST['check_list'])) {

    foreach($_POST['check_list'] as $check) {
    if ($check =='2' && $check =='3' && $check =='6'){
        // do something
    } elseif ($check =='2' && $check =='3'){
        // do something
    } elseif ($check =='6'){
        // do something
    } elseif ($check =='3'){
        // do something
    } elseif ($check =='2'){
        // do something
    }
}
}

Также я пробую это и ничего не делаю

if (in_array(array(2,3,6),$_POST['check_list'])){ 
// not work
} elseif (in_array(array(2,3),$_POST['check_list'])){ 
// not work
} elseif (in_array(array(2),$_POST['check_list'])){ 
// work
} elseif (in_array(array(3),$_POST['check_list'])){ 
// work
} elseif (in_array(array(7),$_POST['check_list'])){ 
// work
}
$_POST[check_list] будет массивом, который вы можете использовать
user9487972 29.05.2018 22:56

Вы пробовали использовать оператор переключения php.net/manual/en/control-structures.switch.php

Eliot K 29.05.2018 22:59

Как думаете, if используете?

Özgür Can Karagöz 29.05.2018 23:02

@smith посмотреть мое обновление ,,,

abukotsh 29.05.2018 23:09
if ($check =='2' && $check =='3' && $check =='6'){ как может $ check быть более чем одним делом одновременно?
user9487972 29.05.2018 23:10

@ Özgür-can-karagöz да, смотрите мое обновление

abukotsh 29.05.2018 23:10

@smith, так что мне делать?

abukotsh 29.05.2018 23:10

Также: php.net/manual/en/function.array-search.php

Özgür Can Karagöz 29.05.2018 23:12

@ eliot-k плохо со мной, потому что у меня многозначность !!

abukotsh 29.05.2018 23:13

@smith я пробую if (in_array(array(2,3,6),$_POST['check_list'])){ ...} , но не работает

abukotsh 29.05.2018 23:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
10
106
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Короче говоря, когда вы отправляете форму, у вас будет массив $_POST['check_list'], содержащий проверенные вами элементы. Итак, если вы отметите 2, 3 и 6, $_POST['check_list'] = [2, 3, 6]. Обратите внимание: если вы не отметите какие-либо параметры, $_POST['check_list'] не будет существовать.

Затем вы можете использовать if (in_array(2, $_POST['check_list'])) {...}, чтобы делать то, что вы хотите, если, например, отмечено 2.

а если у меня 2,3,6? как можно использовать его в in_array ??

abukotsh 29.05.2018 23:12

Вы можете проверить этот ответ

Gutierrez PS 29.05.2018 23:15

@GutierrezPS, сравнивающий $ _POST ['check_list'], не будет работать должным образом, если отмечены другие параметры. используйте пустую функцию, чтобы проверить, установлен ли $ _POST ['check_list'].

Plixxer 29.05.2018 23:16

@abukotsh in_array(2, $array) && in_array(3, $array) && in_array(6, $array)

Barmar 29.05.2018 23:35
Ответ принят как подходящий
    <?php

if (!empty($_POST['check_list'])){
    if (
        has_values(Array(2,3,6), $_POST['check_list'])
    ){
        //Do what you need to do

    }else if (
        has_values(Array(2,3), $_POST['check_list'])
    ){
        //Do what you need to do

    }else if (
        has_values(Array(2), $_POST['check_list'])
    ){
        //Do what you need to do

    }
}else{
    //no checkboxes have been set
}

function has_values($testValues, $arrValues){
/*
    testValues is a 1 dimensional array (needles)
    arrValues is a 1 dimensional array that takes the array of set checkboxs ( haystack )
*/
    foreach ($testValues as $key => $value) {
        if (!in_array($value, $arrValues)){
            return false;
        }
    }
    return true;
}

Примечания разработчика in_array не зависит от типа.

если флажок не установлен, индекс $ _POST ['check_list'] изменится

Я думаю, что array_diff или array_intersect, вероятно, лучше, но это сработает, так что вы можете проголосовать за меня.

user9487972 29.05.2018 23:30

Другие вопросы по теме