У меня есть массив массивов:

Array ( [0] => Array ( [Name] => news/edit ) 
        [1] => Array ( [Name] => news/show ) ) 

У меня есть две следующие переменные:

$module = 'news';
$action = 'show';

Я хочу увидеть, содержит ли мой массив news/show или $module/$action

Я могу использовать здесь explode, но я могу взорвать только один массив.

1
xyz 30 Авг 2011 в 23:14

3 ответа

Лучший ответ

Вы это ищете?

$new_array=array_map(function($x){
     $y= explode('/',$x['Name']);
     return array('module'=>$y[0],'show'=>$y[1]);
},$array);
0
RiaD 30 Авг 2011 в 19:23

Вы можете использовать array_search:

$array = array(array("Name" => "news/edit" ), array("Name" => "news/show"));
$module = 'news';
$action = 'show';
var_dump(array_search(array("Name" => "$module/$action"), $array));
// int(1)
2
akirk 30 Авг 2011 в 19:32

Почему бы вам просто не объединить строки перед проверкой? Нравится:

function doesArrayContainModuleAction($array, $module, $action) {
    foreach($array as $subarray) {
        if($subarray['Name'] == "$module/$action") return true;
    }
    return false;
}
1
bfavaretto 30 Авг 2011 в 19:22