0

我开始使用 PHP,我需要帮助!到目前为止,我有一个视频类别列表,通过这个简单的 foreach 循环,我在链接中显示了所有类别。现在,我想做的是根据类别 ID 仅显示其中的一些。

显示所有类别的代码:

$idx = 0;

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

假设现在我只想显示 ID 为 2、8、21、22 的类别。我可以使用 $category['id'] 来获取 IDS。

我正在考虑拥有一个仅包含我要显示的 ID 的数组...

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

我的问题是,如何在我的 $category 数组中循环,只显示数组中包含的 ID?(基于 $category['id'] )

任何帮助表示赞赏!

4

4 回答 4

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 的类别。

于 2012-04-26T14:14:51.117 回答
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>';
}
于 2012-04-26T14:14:33.680 回答
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>';
    }
}
于 2012-04-26T14:15:05.340 回答
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>';
    }
}

这会在循环的每次迭代中测试 $category['id'] ,如果它在您的 id 数组中,则回显链接。否则,类别项将被忽略,循环继续。

于 2012-04-26T14:16:25.877 回答