Поиск правильной структуры кода для нескольких связанных массивов с условными - PullRequest
0 голосов
/ 10 апреля 2019

У меня проблема с корректной работой циклов foreach.После выхода из foreach после совпадения значения он, похоже, не выполняет итерацию по остальной части массива.

Если я возьму блок elseif изнутри, если он работает как положено.При использовании elseif и с разрывом 2 или без него значение $ ipaddr не изменяется.

Вызывает ли цикл foreach, находящийся внутри цикла while, цикл foreach для сброса или запуска заново?

Я пытался использовать перерыв и продолжить, но, похоже, они не помогают.

while ( $row = sqlsrv_fetch_array($sqlquery, SQLSRV_FETCH_ASSOC) ) {
     echo "<tr><td>"
     foreach ($query['result']['nat']['rules'] as $value) {
          foreach ($value as $data) {
               $daddr = substr($data['destination']['member'], 4);
               $ipaddr = str_replace("host_","",$data['destination-translation']['translated-address']);
               if ( ( array_key_exists('destination-translation', $data))) {
                    if ($daddr == $row['VIP/NAT'])  {
                         echo "<td>" . $daddr . "</td><td>" . $ipaddr . "</td><td>" . "STATIC" . "</td></td>";
                    }
                    else {
                          echo "<td> </td><td>" . $ipaddr . "</td><td> </td></tr>";
                          break 2;
                    }
                }
           }
      }
 }
...