У меня есть этот массив $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';
}
}
}
Однако это похоже на условие ИЛИ, если есть совпадения, есть эхо. Мне нужно, чтобы все условия соответствовали.
С уважением,






Установите для флага значение 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]как ситуацию.