@Us59

Как проверить конкретное содержимое на существование игнорируя другие строчки?

array (
  'info' => 
  array (
    'reason' => 
    array (
    ),
    'reasons' => 
    array (
      0 => 
      array (
        'reason' => 'NUMBER 1',
        'code' => 'N1',
      ),
      1 => 
      array (
        'reason' => 'NUMBER 2',
        'code' => 'N2',
      ),
    ),
    'Status' => true,


Задача такая: Нужно проверять, что в reasons есть reason => NUMBER 1 (по названию).

Я делаю вот так, но суть в том, что reasons может быть 1, а иногда 3, а иногда 10, а мне нужно проверять по названию: NUMBER 1 если она есть, то я делаю нужные действия, а если reason NUMBER 1 нету, я должен сделать else и также делать действие, при этом нужно игнорировать другие reasons.

В примере ниже если в исходном json имеем 2 или более причины всегда будет срабатывать else.

if (!empty($array["Info"]["Reasons"])) { // Check if carrier locked
                        foreach ($array["info"]["Reasons"] as $key) {
                            if ($key["reason"] == 'NUMBER 1') {
                                //....
                            } elseif ($key["reason"] == 'NUMBER 10') {
                                //....
                            } else {
                               // СРАБОТАЕТ, ЕСЛИ КАКАЯ ЛИБО ДРУГАЯ REASONS СУЩЕСТВУЕТ.
                            }
                        }
                    }
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
@iFunction
PHP
Не очень понял, что нужно.
Но можно использовать флаг:
$hasReasonOne = (array_search('NUMBER 1', array_column($array["info"]["Reasons"], 'reason')) !== false);
foreach ($array["info"]["Reasons"] as $key) {
    if ($key["reason"] == 'NUMBER 1') {
        ...
    } elseif (!$hasReasonOne) {
        // if reason one not exist
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы