Php 检查多维数组中是否存在值
我想使我的分类菜单响应显示的项目。 项目具有多个类别,因此多个类别菜单链接可以处于活动状态。 无论项目属于哪个类别,都会在多维数组中包含的php文件中指定 e、 g 现在,我想检查每个类别是否是数组$allProjects中的数组“project1”、“project2”、“project3”的值,如果是,则回显“active” 到目前为止我已经Php 检查多维数组中是否存在值,php,html,Php,Html,我想使我的分类菜单响应显示的项目。 项目具有多个类别,因此多个类别菜单链接可以处于活动状态。 无论项目属于哪个类别,都会在多维数组中包含的php文件中指定 e、 g 现在,我想检查每个类别是否是数组$allProjects中的数组“project1”、“project2”、“project3”的值,如果是,则回显“active” 到目前为止我已经 <?php if (($_GET['cat'] == 'corporate')) {echo 'active';}; || if (isset
<?php if (($_GET['cat'] == 'corporate')) {echo 'active';}; || if (isset ($_GET['project'])) {if in_array('corporate', $_GET['project']) {echo 'active';}; ?>
我使用上面定义的$project变量作为键,但这不起作用。它希望参数是数组。我只想使用项目的名称(在$project中定义)作为in_数组函数的键,并检查值中$category的外观
感谢您的帮助您可能希望使用foreach遍历数组,并相应地设置活动/非活动指示器。您可以使用
array\u 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';
}
我不确定,在您的情况下,$\u GET['project']中有什么内容,但这至少会使您的代码更具可读性。:)
你应该在第一场比赛后加一个休息来完成这个循环。没有必要继续循环,谢谢,但它给了我一个无效参数:警告:为foreach()@tgifred提供的参数无效请确保$allProjects已正确初始化,如问题中所示。更新了我的答案。谢谢鲁布,我试过了,我想我没有说清楚。我更新了我的question@tgifred更新了我的答案。@t如果不客气的话。如果答案对你有用,请随意接受。
$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';
}
isActive = false;
foreach($allProjects as $project) {
if(in_array($_GET['cat'], $project) isActive = true;
}