2015-06-23 4 views
1

Я создаю портфолио с несколькими категориями. У меня есть многомерный массив ...проверить значения в многомерном массиве по определенному ключу

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

и мне нужно проверить в этом многомерный массив в определенном ключе (например, «project1»), если значение существует (например, «Интернет»)

так я думаю что-то вроде этого ...

$project = $_GET('project'); //this is the project that is displayed 
$category = 'print' //for example, I would redefine this variable for each category. 

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

Я использую $ project, переменную, определенную выше, как ключ, но это не работает. Все, что я хочу, это использовать имя проекта (определенное в $ project) в качестве ключа для функции in_array и проверить появление категории $ в значениях.

Спасибо за помощь

+0

Вы установите '$ project' с' $ _GET' и затем переназначьте его в своем цикле 'foreach'. Любая причина для этого? –

ответ

0

Попробуйте это:

$project = $_GET['project']; 
$category = 'print'; 

$categories = $allProjects[$project]; 
if (!empty($categories) && in_array($category, $categories)) { 
    echo 'yes'; 
} 
0

То, что вы хотите, не нужен цикл:

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

$project = $_GET['project']; 
$category = 'print'; 
if(in_array($category, $allProjects[$project])) { 
    echo 'yes'; 
} 
?> 
+0

Я пробовал это, но ... 1. он говорит: «Имя функции должно быть строкой», ссылаясь на эту строку: $ project = $ _GET ('project'); и 2. он эхом 5 раз «да», который может быть только числом всех проектов с определенной категорией (в данном случае: «печать») – tgifred

+0

$ _GET - это массив, а не функция. Он используется как $ _GET ['key']. Код из вашего вопроса также не может работать, но я бы предположил, что условие никогда не оценивается, поэтому оно всегда печатает. – spenibus