我有一个视频类别列表,通过这个简单的 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'] )
如果 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 的类别。
$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>';
}
没问题。 添加一些简单的逻辑来测试该 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 数组中,则回显该链接。 否则,类别项将被忽略并且循环继续。
$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>';
}
}