2012-04-26 22 views
0

ImはPHPで始まり、私は助けが必要です!これまでのところ、私は自分のビデオのカテゴリリストを持っていて、この単純なforeachループでは、リンク内にすべてを表示しています。今、私がしたいのは、カテゴリIDに基づいて、それらのいくつかだけを表示することです。すべてのカテゴリを表示PHP - foreachループ

コード:2,8,21,22:

$idx = 0; 

foreach($this->categories as $category) 
{ 
    echo "\n".($idx++ ? '| ' : '').'<a href="'.KM_Helpers::getCategoryURL($category).'">'.$category['name'].'</a>'; 
} 

のは、今、私はIDを持つカテゴリのみを表示したいとしましょう。私は$ category ['id']を使ってIDSを得ることができます。

私は私が見せたいだけIDを含む配列を有していると考えていた...

$myarray = array(2, 8, 21, 22); 

私の質問は、どのようにすることができますIに含まれる唯一のIDを表示する私の$カテゴリ配列、ループ配列? ($ category ['id']に基づいて)

何か助けていただきありがとうございます!

+0

'$ idx ++'は常にtrueを返しませんか? – 472084

+0

@Jleagle no。初めてfalseを返します。 $ idx ++はインクリメントする前に$ idxの値を返します。 –

+0

上記の答えはすべて、IDをカテゴリクエリに引き込むことを前提としています。あなたはそれをやっていますか? @Surreal Dreams、私は$ category ['id']の行を文章ではなく質問文として読む。 –

答えて

1
$idx = 0; 
$myarray = array(2, 8, 21, 22); 
foreach($this->categories as $category) 
{ 
    if (!in_array($category['id'], $myarray)) { 
     continue; // skip it if the id isn't in your array of accceptable IDs 
    } 
    echo "\n".($idx++ ? '| ' : '').'<a href="'.KM_Helpers::getCategoryURL($category).'">'.$category['name'].'</a>'; 
} 
2

id値は、カテゴリ配列内のインデックスと一致する場合は、あなたが欲しいものを超えるだけループすることができます

foreach ($myarray as $id) 
{ 
    $category = $this->categories[$id]; 
    echo "\n".($idx++ ? '| ' : '') . 
    '<a href="' . KM_Helpers::getCategoryURL($category) . '">' . 
    $category['name'] . '</a>'; 
} 

そうでない場合、あなたは(二重ループをしなければならない可能性によって隠さin_array)、IDが有効かどうかをチェックしたり、特定の有効なIDを持つカテゴリを検索したりすることができます。

+0

これは問題に近づけるためのすっきりした方法です。カテゴリを反復するのではなく、承認されたIDを繰り返し処理します。 OPは毎回すべてのカテゴリに触れる必要がある何かをすることを決して言わないので、+1する。 –

1
$ids= array(2, 8, 21, 22); 

$idx = 0; 
foreach($this->categories as $id => $category){ 
    if (in_array($category['id'] , $ids)) { 
     echo "\n".($idx++ ? '| ' : '').'<a href="'.KM_Helpers::getCategoryURL($category).'">'.$category['name'].'</a>'; 
    } 
} 
1

問題ありません。 idは、「承認」のIDのリスト上にあるかどうかをテストするために、いくつかの単純な論理に追加します。これは、ループの各反復で$カテゴリ[「ID」]をテストし

$idx = 0; 
$myarray = array(2, 8, 21, 22); 

foreach($this->categories as $category) 
{ 
    if(in_array($category['id'], $myarray) 
    { 
     echo "\n".($idx++ ? '| ' : '').'<a href="'.KM_Helpers::getCategoryURL($category).'">'.$category['name'].'</a>'; 
    } 
} 

、それはあなたの配列にいた場合ids、あなたはリンクをエコーし​​ます。それ以外の場合、カテゴリ項目は無視され、ループが移動します。