2016-09-05 18 views
0

次のオブジェクトの配列を使用してHTMLフォームのselect要素を作成しています。重複するオブジェクトのキー値を削除します

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 
     ) 
) 

これは、$ reviewTitlesという名前の配列の内容です。

私はそれからforeachして、各タイトルの最初の文字を選択に表示したいと思います。私がこれまでに次のコードを使用して、これを達成している

:以前に示したように同じ文字でタイトルがある場合

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 } ?> 

しかし、このコードで、それがドロップダウンに再び表示されます。たとえば、ドロップダウンの時点で2つのDが表示されます。

select要素の最終リストから重複したエントリを削除する方法が不思議です。

ご協力いただければ幸いです。

+0

なぜオプション値として最初の文字を使用していますか?重複の問題がないように他のものを使用してください。 – Barmar

答えて

0

最初に:

foreachループが何をしているのか分かりません。 $valueは、実際には、印刷された複製を停止配列内の最初の文字を覚えているし、新しいfirstletterが配列

<?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>"; 
    } 
} 
?> 

に既に存在するかどうかを確認するために、ターン

<?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>"; 
} 
?> 

内の各オブジェクトになりますしかし私は私の人生があなたが実際にここでやろうとしていることを解決することはできません。現実にはこれは役に立たないかもしれません。

関連する問題