仅在白名单数组中找到 id 时才打印数组行数据

问题描述 投票:0回答:4

我有一个视频类别列表,通过这个简单的 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'] )

php arrays foreach filtering whitelist
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 的类别。


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>';
}

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'] ,如果它在您的 ids 数组中,则回显该链接。 否则,类别项将被忽略并且循环继续。


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>';
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.