Ergebnis 1 bis 3 von 3

Thema: Mehrstufiges array vergleichen und gleiche Werte ignorieren

  1. #1
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.858
    Contao-Projekt unterstützen

    Support Contao

    Standard Mehrstufiges array vergleichen und gleiche Werte ignorieren

    Hallo,

    ich stehe vor einem, für mich nicht lösbarem Problem:

    Über ein RSCE habe ich eine verschachtelte Templateausgabe. Das Ergebnis ist folgendes:

    Code:
      "dataset" => array:3 [?
        0 => {#514 ?
          +"company": "namovie e.U."
          +"logo": "67e91xxxxxxxxxxxxxxxxxxxxxx5e77"
          +"category": array:3 [?
            0 => {#79 ?
              +"categoryItem": "videoproduktion"
            }
            1 => {#516 ?
              +"categoryItem": "werbeagentur"
            }
            2 => {#518 ?
              +"categoryItem": "werbung"
            }
          ]
          +"portraitlink": "namovie"
        }
        1 => {#519 ?
          +"company": "Bernhard Renner - beRecont"
          +"logo": "7986f30bxxxxxxxxxxxxxxxxxxxxxxxx85e77"
          +"category": array:3 [?
            0 => {#520 ?
              +"categoryItem": "werbung"
            }
            1 => {#521 ?
              +"categoryItem": "werbeagentur"
            }
            2 => {#522 ?
              +"categoryItem": "webdesign"
            }
          ]
          +"portraitlink": "berecont"
        }
        2 => {#523 ?
          +"company": "Fokuspunkt e.U."
          +"logo": "3a6axxxxxxxxxxxxxxxxxxxx85e77"
          +"category": array:4 [?
            0 => {#524 ?
              +"categoryItem": "fotografie"
            }
            1 => {#525 ?
              +"categoryItem": "videoproduktion"
            }
            2 => {#526 ?
              +"categoryItem": "werbung"
            }
            3 => {#527 ?
              +"categoryItem": "werbeagentur"
            }
          ]
          +"portraitlink": "fokuspunkt"
        }
      ]
    Jetzt befinden sich in den arrays 'category' jeweils auch idente Werte. Doch bei der Ausgabe dieser arrays sollen keine doppelten Werte ausgegeben werden.

    Ausgeben lasse ich diese aktuell so:
    Code:
    <div class="row">
    	<div id="filters" class="nav">
    		<?php foreach ($this->dataset as $datacat): ?>
    			<?php foreach ($datacat->category as $catlink): ?>
    
    				<button class="btn btn-outline-primary" data-filter=""><?= $catlink->categoryItem ?></button>
    
    			<?php endforeach; ?>
    		<?php endforeach; ?>
    	</div>
    </div>
    Als Ergebnis erhalte ich dieses HTML, aber eben mit doppelten Werten
    Code:
    <div id="filters" class="nav">
        <button class="btn btn-outline-primary" data-filter="">videoproduktion</button>
        <button class="btn btn-outline-primary" data-filter="">werbeagentur</button>
        <button class="btn btn-outline-primary" data-filter="">werbung</button>
        <button class="btn btn-outline-primary" data-filter="">werbung</button>
        <button class="btn btn-outline-primary" data-filter="">werbeagentur</button>
        <button class="btn btn-outline-primary" data-filter="">webdesign</button>
        <button class="btn btn-outline-primary" data-filter="">fotografie</button>
        <button class="btn btn-outline-primary" data-filter="">videoproduktion</button>
        <button class="btn btn-outline-primary" data-filter="">werbung</button>
        <button class="btn btn-outline-primary" data-filter="">werbeagentur</button>
    
    </div>
    Wie frage ich nun die Inhalte ab, ob sie schon mal ausgegeben wurden, sodass diese nicht mehr ausgegeben werden?
    Wäre prima, wenn ich ein Beispiel erhalten könnte, auf das ich die Lösung aufbauen könnte.

    vielen Danke
    Grüsse
    Bernhard


  2. #2
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.858
    Contao-Projekt unterstützen

    Support Contao

    Standard

    aktueller Stand ... gelöst.

    hier noch mein Ergebnis, welches auch soweit funktioniert.
    ... was ich nun noch schaffen muss: es sinnvoll in mein HTML-Konstrukt einzubauen

    PHP-Code:
    echo("$class "); 
    gibt nun keine doppelten Werte, sondern die selektierten Werte aus.

    PHP-Code:
    <?php 
    foreach ($this->dataset as $catunique) {
        
    $allItems = [''];    
        foreach (
    $catunique->category as $catlink) {
            
    array_push($allItems$catlink->categoryItem);     
            };
            
    $allItems array_unique($allItems);
        };
        foreach (
    $allItems as $class) {
            echo(
    "$class ");
    };
    ?>
    Grüsse
    Bernhard


  3. #3
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.858
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Der Form wegen, hier noch das HTML im template

    PHP-Code:
    <div class="container">
        <div class="categories">
            <button class="btn btn-outline-primary active" data-filter="*">alle</button>
            <?php $all_cats = array() ?>    
            <?php foreach ($this->dataset as $datacat): ?>
                <?php foreach ($datacat->category as $catlink): ?>

                                    <!-- // lets add all possible values to an array (including duplicates) -->
                    <?php array_push($all_cats$catlink->categoryItem?>
                <?php endforeach; ?>
            <?php endforeach; ?>

                    <!-- // now we make a new array where only unique values are present -->
            <?php $unique_cats array_unique($all_cats?>

                    <!-- // now we can print them in a foreach -->
            <?php foreach ($unique_cats as $cat): ?>
                <button class="btn btn-outline-primary" data-filter=".<?= $cat ?>"><?= $cat ?></button>
            <?php endforeach; ?>
        </div>
    </div>
    Grüsse
    Bernhard


Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •