我想让我的类别菜单响应所显示的项目。 这些项目有多个类别,因此可以激活多个类别菜单链接。 项目所属的任何类别都是在多维数组中包含的php文件中指定的......
e.g。
$allProjects = array(
'project1' => array('corporate'),
'project2' => array('corporate', 'print'),
'project3' => array('web')
);
现在我想检查每个类别是否是数组的值' project1',' project2',' project3',... $ allProjects,如果是,那么回声'活跃'。
到目前为止,我有......
<?php if (($_GET['cat'] == 'corporate')) {echo 'active';}; || if (isset ($_GET['project'])) {if in_array('corporate', $_GET['project']) {echo 'active';}; ?>
这有意义吗?
更新:
如果存在值(第3级数组),我需要检查特定键(第2级数组)的多维数组
所以我觉得这样的事情......
$project = $_GET('project');
$category = $_GET('cat');
foreach ($allProjects as $project => $categories) {
if in_array($category, $project);
echo 'yes';
}
我使用$ project,上面定义的变量作为关键但不起作用。它希望参数是数组。我想要的是使用项目的名称(在$ project中定义)作为in_array函数的键,并检查值中$ category的外观。
感谢您的帮助
答案 0 :(得分:2)
您可以使用array_search()
搜索阵列中的特定值。此函数返回与找到的值对应的键,否则返回false
。
所以你要做的就是遍历每个子阵列:
$category = $_GET['cat'];
$allProjects = array(
'project1' => array('corporate'),
'project2' => array('corporate', 'print'),
'project3' => array('web')
);
foreach ($allProjects as $projectName => $categories) {
$categoryIndex = array_search($category, $categories);
if ($categoryIndex !== false) {
echo 'active: ' . $categoryIndex;
// Do something with $categoryIndex and $projectName here
}
}
<强>更新强>:
看起来这是你的答案:
$project = $_GET('project');
$category = $_GET('cat');
if (isset($allProjects[$project]) && in_array($category, $allProjects[$project])) {
echo 'yes';
}
答案 1 :(得分:1)
您可能希望使用foreach遍历数组并相应地设置活动/非活动指示符。
答案 2 :(得分:1)
我不确定,在您的情况下$ _GET ['project']中的内容是什么,但这至少会使您的代码更具可读性。 :)
isActive = false;
foreach($allProjects as $project) {
if(in_array($_GET['cat'], $project) isActive = true;
}