Если условие внутри foreach, чтобы знать все совпадения

У меня есть этот массив $fields:

Array
(
    [0] => Array
        (
            [field] => Name
            [condition] => 0
            [value] => abc
        )

    [1] => Array
        (
            [input] => Username
            [condition] => 1
            [value] => xyz
        )

    [2] => Array
        (
            [input] => Email
            [condition] => 1
            [value] => [email protected]
        )
    ...
)

условие 0 равно, а условие 1 не равно. Как я могу заметить, что все совпадения.

Мне нужно что-то повторить, если только все условия совпадают. Я имею ввиду if value is abc for name and value is not xyz for username and value is not [email protected] for email field..

foreach( $fields as $field ) {
   if ( $field['condition'] == 0 ) {
       if ( $field['value'] == 'value_from_input') {
           echo 'something';       
       }
    }
    elseif ( $field['condition'] == 0 ) {
      if ( $field['value'] == 'value_from_input') {
           echo 'something';       
       }
   } 
}

Однако это похоже на условие ИЛИ, если есть совпадения, есть эхо. Мне нужно, чтобы все условия соответствовали.

С уважением,

Стоит ли изучать 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 и хотите разрабатывать...
1
0
1 194
1

Ответы 1

Установите для флага значение true, затем выполните цикл по массиву и, когда есть кодирование, которое не соответствует, установите флаг в значение false и выйдите из цикла. Если после цикла флаг все еще верен, вы можете быть уверены, что все условия совпадают:

$fields = [
    [
        "field" => "Name",
        "condition" => 0,
        "value" => "abc",
    ],
    [
        "field" => "Username",
        "condition" => 1,
        "value" => "abc",
    ],
    [
        "field" => "Email",
        "condition" => 1,
        "value" => "abc",
    ],
];
$success = true;
foreach( $fields as $field ) {
   if ($field["condition"] === 0) {
       $success = false;
       break;
   }
}
if ($success) { 
    echo "All conditions match";
}
else {
    echo "Some conditions don't match";
}

Демо

На самом деле есть много способов сделать это. Другой способ - отфильтровать поля, в которых условие не соответствует, а затем сравнить count каждого массива:

$filtered = array_filter($fields, function($el) {
    return $el["condition"] === 0;
});
$success = count($fields) === count($filtered);
if ($success) { 
    echo "All conditions match";
}
else {
    echo "Some conditions don't match";
}

Спасибо. это кажется логикой. но мне нужно проверить if Name is abc && username isnot abc && email isnot [email protected] как ситуацию.

micky 24.03.2018 16:15

Ой, тогда я не совсем понимаю. Сколько там элементов? Какова логика ваших условий?

ishegg 24.03.2018 16:20

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