[РЕШЕНО]Упростить код

Главные вкладки

Аватар пользователя delta222 delta222 18 марта 2009 в 12:30

Здравствуйте, помогите пожалуйста упростить код, чтоб переменные не плодить.

<?php

$a 

11;  // термины
$b 12;
$c 13;

// Получить все термины текущей ноды
if (arg(0) == 'node' && is_numeric(arg(1)) && ! arg(2) ) {
  
$node node_load(arg(1));
  
$taxonomy=$node->taxonomy;
  foreach(
$taxonomy as $term_id=>$term_info) {
    if (
$term_id == $a || $term_id == $b || $term_id == $c ) {
return 
TRUE;
    }
  }
}

//Сравнивается термин
if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2)) && arg(2) == $a || arg(2) == $b || arg(2) == $c ) {
    return 
TRUE;
}

?>

Комментарии

Аватар пользователя delta222 delta222 18 марта 2009 в 14:26

Если я все правильно понял то код будет иметь следующий вид:

<?php

$allowed_terms 

= array(111213);// термины

// Получить все термины текущей ноды

if (arg(0) == 'node' && is_numeric(arg(1)) && ! arg(2) ) {
  
$node node_load(arg(1));
  
$taxonomy=$node->taxonomy;
  foreach(
$taxonomy as $term_id=>$term_info) {
    if(
in_array($term_id$allowed_terms))  {
return 
TRUE;
    }
  }
}

//Сравнивается термин
if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))) {
 if(
in_array(arg(2), $allowed_terms)) { 
return 
TRUE;
   }
}

?>

вроде работает

Аватар пользователя kosilko kosilko 18 марта 2009 в 14:52

<?php
$terms 
= array(11,12,13);//термины
$aarg();// получить аргументы единоразово, чтоб не вызывать 500 раз функцию arg(); Да, мы добавили еще одну лишнюю переменную.
return (bool)(
(
$a[0] == 'node'&&is_numeric($a[1])&&!$a[2]&&array_intersect($terms,array_keys(node_load($a[1])->taxonomy)))
||
(
$a[0] == 'taxonomy'&&$a[1] == 'term'&&isset($a[2])&&in_array($a[2],$terms))
);
?>
Аватар пользователя delta222 delta222 18 марта 2009 в 15:04

kosilko wrote:


<?php
$terms 
= array(11,12,13);//термины
$aarg();// получить аргументы единоразово, чтоб не вызывать 500 раз функцию arg(); Да, мы добавили еще одну лишнюю переменную.
return (bool)(
(
$a[0] == 'node'&&is_numeric($a[1])&&!$a[2]&&array_intersect($terms,array_keys(node_load($a[1])->taxonomy)))
||
(
$a[0] == 'taxonomy'&&$a[1] == 'term'&&isset($a[2])&&in_array($a[2],$terms))
);
?>


Согласен, спасибо