2012-04-26 207 views
0

我開始在PHP中,我需要幫助!到目前爲止,我有我的視頻的類別列表,並與這個簡單的foreach循環,即時通訊顯示所有這些,在一個鏈接。現在,我想要做的只是根據類別ID顯示其中的一部分。這顯示所有類別PHP - foreach循環

代碼:

$idx = 0; 

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

讓我現在只想顯示與IDS的類別說:2,8,21,22。我可以使用$ category ['id']來獲得IDS。

我想有一個只包含我想要顯示的ID陣列...

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

我的問題是,我怎麼能循環在我的$類別排列,只顯示包含在ID數組? (基於$ category ['id'])

任何幫助表示讚賞!

+0

'$ idx ++'不會總是返回true嗎? – 472084 2012-04-26 14:20:28

+0

@Jleagle no。第一次它會返回false。 $ idx ++在遞增之前返回$ idx的值。 – 2012-04-26 14:22:48

+0

以上所有答案均假設您將ID拉入分類查詢中。你在做那個嗎? @Surreal Dreams,我讀了$ category ['id']這行更多的是一個問題而不是一個聲明。 – 2012-04-26 14:25:45

回答

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。 – 2012-04-26 14:22:54

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名單:

$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,你迴應鏈接。否則,類別項被忽略,循環繼續。