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

标签 php html

我想让我的类别菜单响应所显示的项目。 这些项目有多个类别,因此多个类别菜单链接可以处于事件状态。 无论项目属于哪个类别,都在多维数组中包含的 php 文件中指定...

例如

$allProjects = array(
    'project1' => array('corporate'),
    'project2' => array('corporate', 'print'),
    'project3' => array('web')
);

现在我想检查每个类别是否是数组 $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 = $_GET('project');
$category = $_GET('cat');

foreach ($allProjects as $project => $categories) {
if in_array($category, $project);
echo 'yes';
}

我使用上面定义的 $project 变量作为键,但这不起作用。它期望参数是数组。我想要的只是使用项目名称(在 $project 中定义)作为 in_array 函数的键,并检查值中 $category 的出现。

感谢帮助

最佳答案

您可以使用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';
}

关于php - 检查多维数组中是否存在值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30982742/

相关文章:

php - 使用PHP错误将HTML表单中的数据输入到MYSQL

php - 点击为 MYSQL 数据库添加 +1 投票

html - 如何在图像上放置跨度

javascript - 如何在指令模板中使用传递的数据?

html - 访问未知数量的 div 中的第一个 <section>

php - 检查 WooCommerce 是否处于事件状态以及使用的版本

php - 如何捕获并记录生产网站中的每个 PHP 和 JS 错误?

javascript - For循环不重置条形图数据

html - 减少 div/图像的事件区域以允许阴影

javascript - 为什么 window.location 在 FF 中比在 Chrome 中快得多?