PHP Как l oop через вложенный массив с переменной, заполненной из начального цикла массива? - PullRequest
1 голос
/ 17 января 2020

Хорошо, у меня есть массив $parentArray, через который я зацикливаюсь для отображения определенных полей. В этом l oop у меня есть variable, называемый $specialCases, который должен сохранять другие определенные поля, такие как foo и bar. Позже в рамках начального цикла $parrentArray я хотел бы провести l oop через массив $specialCases для рендеринга foo и bar.

Как я могу это сделать?

Ниже мое испытание, но оно не работает. Я получаю только 1 значение в массиве $specialCases вместо ожидаемого 2.

        <?php foreach( $this->parrentArray as $strName => $arrField ): ?>
          <?php if ( $this->{$strName} !== null && $this->{$strName} !== '' ): ?>       
            <?php if ( is_array( $this->{$strName} ) ): ?>
              <?php $this->{$strName} = implode( ', ', array_map( function( $varValue ) {
                if ( is_string ( $varValue ) ) return $varValue;
                if ( is_array ( $varValue ) ) return $varValue['title'];
                return $varValue;
                }, $this->{$strName} )) ?>
            <?php endif; ?>	        
            <?php if ( is_string( $this->{$strName} ) ): ?>
              <?php if(!in_array($strName, $ignore)): ?>
                <?php if( $strName == 'foo' || $strName == 'bar'): ?>
                  <?php $specialCases[] = $strName ?>
                  <?php var_dump($specialCases) ?>
                <?php endif; ?>
                <?php if( $strName !== 'foo'): ?>
                  <?php if( $strName !== 'bar'): ?>
                    <div class="ctlg_entity <?= $strName ?>">
                      <?php if( $strName !== 'description'): ?>
                        <span class="ctlg_entity_name"> <?= $arrField['title']; ?>:</span>
                      <?php endif; ?>
                        <div class="ctlg_entity_value">
                          <?php if ($strName == "foo" || $strName == "bar"):  ?>
                            <?php echo count($specialCases); ?>
                            <?php foreach ($specialCases as $key => $value): ?>
                              <!-- My issue is here, for some reasin $specialCases only has 1 value instead of an expected 2 -->
                              <span class="filter_value special">Filter value comes here,</span>
                            <?php endforeach; ?>
                          <?php endif; ?>
                            <span class="detail_value"><?= $this->{$strName}; ?></span>
                          </div>
                    </div>
                  <?php endif; ?>
                <?php endif; ?>
              <?php endif; ?>                  
            <?php endif; ?>
          <?php endif; ?>
        <?php endforeach; ?>
...