Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查多维数组中是否存在值_Php_Html - Fatal编程技术网

Php 检查多维数组中是否存在值

Php 检查多维数组中是否存在值,php,html,Php,Html,我想使我的分类菜单响应显示的项目。 项目具有多个类别,因此多个类别菜单链接可以处于活动状态。 无论项目属于哪个类别,都会在多维数组中包含的php文件中指定 e、 g 现在,我想检查每个类别是否是数组$allProjects中的数组“project1”、“project2”、“project3”的值,如果是,则回显“active” 到目前为止我已经 <?php if (($_GET['cat'] == 'corporate')) {echo 'active';}; || if (isset

我想使我的分类菜单响应显示的项目。 项目具有多个类别,因此多个类别菜单链接可以处于活动状态。 无论项目属于哪个类别,都会在多维数组中包含的php文件中指定

e、 g

现在,我想检查每个类别是否是数组$allProjects中的数组“project1”、“project2”、“project3”的值,如果是,则回显“active”

到目前为止我已经

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