2011-06-24 16 views
0

多くのおかげで、ここでStackoverflowを手伝ってくれてありがとう。あなたはすべて素晴らしいです!今質問に。私は "アヒル"、 "鶏"、 "卵"、 "豚"、 "ステーキ"、 "牛"、 "魚"、 "エビ"、 "鹿"、および "子羊"カスタム注文と表示foreach PHP

アルファベット順に表示するリストを取得しました。これは動的配列なので、必ずしもこれらの値をすべて持っているとは限りません。私は、ステーキの隣に「トップチョイス」を常に表示しておき、その隣にアルファベット順に「注文可能」を表示したいと思います。

foreach($meat_items as $meat_item) 
    echo $meat_item . ' Available for Order <br>'; 

私は明確にすべき:ステーキは常にアレイの一部ではないかもしれない。ここ

は、私は配列として$ meat_itemsで、これまで持っているものです。

+0

しかし、それは常に "ステーキ"を持っていますか?あなたが最初にリストに入れたい "ステーキ"については、何が特別なのでしょうか? –

+0

必ずしもステーキを持っているとは限りません。私はそれがリストの一番下にあるのではなく、その肉カテゴリーの一番の選択肢の一つなので目立つようにする必要があります。残りはアルファベット順にする必要があります。 – David

+0

"Steak"を配列から削除してエコーして、配列からすべてをエコーすることはできませんか? –

答えて

3

あなたはいつもステーキが最初に表示させたいので、ハードコードは:アルファベット順

if (in_array("steak", $meat_items)) { 
    `echo "Steak: Top Choice";` 
} 

ソートあなたの配列:

sort($meat_items); 

次に、あなたの配列をループを除くすべての項目をエコーステーキ:

foreach ($meat_items as $meat_item) { 
    if ("steak" != $meat_item) { 
     echo $meat_item . ' Available for Order<br />'; 
    } 
} 
+0

@GeorgeCumminsはソート()で追加します。彼はまだアイテムの残りの部分をソートすることを望んでいます。 – FinalForm

+0

私は明確にすべきです:ステーキは必ずしも配列の一部ではないかもしれません。 – David

+0

@FinalForm:彼はすでに彼がそれを働いたと言いましたが、私はあなたを幸せにするためにそれを加えました。 –

0
if (!empty($meat_items['steak'])) 
{ 
    echo 'Steak Top Choice <br >'; 
    unset($meat_items['steak']); 
} 

sort($meat_items); 

foreach($meat_items as $meat_item) 
    echo $meat_item . ' Available for Order <br>'; 
+0

'unset()'関数にかっこがありません。 – iamandrus

+0

@itamakeが修正されました。 – FinalForm

+0

私は明確にすべきです:ステーキは必ずしも配列の一部ではないかもしれません。 – David

0

これを行うより一般的な方法は、PHPにアイテムのソート方法を伝えることです。ソートの「比較」を定義して「上の選択肢」を選択し、usortに渡します。

私は本当にPHPを知らないが、何かのように:「それは常にすべてのこれらの値を持っていなかったり、そのためにも」

function prefer_top($a, $b) { 
    /* We can modify this array to specify whatever the top choices are. */ 
    $top_choices = array('Steak'); 
    /* If one of the two things we're comparing is a top choice and the other isn't, 
     then it comes first automatically. Otherwise, we sort them alphabetically. */ 
    $a_top = in_array($a, $top_choices); 
    $b_top = in_array($b, $top_choices); 
    if ($a_top && !$b_top) { return -1; } 
    if ($b_top && !$a_top) { return 1; } 
    if ($a == $b) { return 0; } 
    return ($a < $b) ? -1 : 1; 
} 

usort($meat_items, "prefer_top"); 

// and then output them all in order as before. 
関連する問題