2016-09-05 13 views
0

Ich erstelle ein HTML-Formularauswahlelement mit dem folgenden Array von Objekten.Entfernen Sie doppelte Objektschlüsselwerte

Array 
(
    [0] => stdClass Object 
     (
      [post_title] => Showing Now Review 
     ) 

    [1] => stdClass Object 
     (
      [post_title] => Interstellar 
     ) 

    [2] => stdClass Object 
     (
      [post_title] => The Conjuring 2 
     ) 

    [3] => stdClass Object 
     (
      [post_title] => Django Unchained 
     ) 

    [4] => stdClass Object 
     (
      [post_title] => Captain America: Civil War 
     ) 

    [5] => stdClass Object 
     (
      [post_title] => Dallas Buyers Club 
     ) 
) 

Dies ist der Inhalt eines Arrays $ reviewTitles benannt.

Ich möchte dann durch diese, und zeigen Sie den ersten Buchstaben jedes Titels in der Auswahl.

ich dies erreicht habe bisher mit dem folgenden Code:

foreach($reviewTitles as $key => $value) { 
    $fullTitle = $reviewTitles[$key]->post_title; 
    $firstLetter = substr($fullTitle, 0, 1); ?> 

<option value="<?php echo($firstLetter); ?>" <?php echo($_POST[ 'cboTitle']=="<?php echo($firstLetter); ?>" ? "selected='selected'": "")?>> 
    <?php echo($firstLetter); ?> 
</option> 

<?php } ?> 

jedoch mit diesem Code, wenn es ein Titel mit dem gleichen Buchstaben wie zuvor gezeigt, wird es wieder in der Dropdown-Liste angezeigt werden soll. So werden zum Beispiel im Drop-Down-Menü zwei D's angezeigt.

Ich frage mich, wie ich alle doppelten Einträge aus der endgültigen Liste im Select-Element entfernen kann.

Jede Hilfe würde sehr geschätzt werden.

+0

Warum verwenden Sie den ersten Buchstaben als Optionswert? Verwenden Sie etwas anderes, damit Sie kein Problem mit Duplikaten haben. – Barmar

Antwort

0

Erstens:

Sie scheinen nicht zu verstehen, was die foreach-Schleife tut. Die $value wird in der Tat jedes Objekt wiederum

<?php 
foreach($reviewTitles as $key => $value) { 
    $firstLetter = substr($value->post_title, 0, 1); 
    $sel = $_POST['cboTitle'] == $firstLetter ? 'selected="selected"' : ''; 
    echo "<option $sel value='$firstLetter'>$firstLetter</option>"; 
} 
?> 

Jetzt Duplikate werden gedruckt, erinnert die ersten Buchstaben in einem Array zu stoppen und dann prüfen, ob der neue first ist bereits im Array

<?php 
$f_letters = array(); 
foreach($reviewTitles as $key => $value) { 
    $firstLetter = substr($value->post_title, 0, 1); 
    if (!in_array($firstLetter, $f_letters)) { 
     $f_letters[] = $firstLetter; 
     $sel = $_POST['cboTitle'] == $firstLetter ? 'selected="selected"' : ''; 
     echo "<option $sel value='$firstLetter'>$firstLetter</option>"; 
    } 
} 
?> 

Aber ich kann nicht für das Leben von mir herausfinden, was Sie hier eigentlich machen wollen. Das kann sich in Wirklichkeit als nutzlos erweisen

Verwandte Themen