Вызов функции в массиве php - PullRequest
1 голос
/ 07 ноября 2011

Полный новичок в программировании:)

Я возился с темой WordPress и столкнулся с препятствиями.Если я помещу это в archive.php,

<?php 

if (is_category(array( 9, 13, 24,)) {
 echo 'Light is GREEN';
  }else {
 echo 'Light is RED}';
 ?>

Эта часть работает нормально, когда я перехожу к категориям 9, 13, 24, я получаю «light is Green» и «light is red» для всех других категорий.

Теперь у меня есть эта функция, которая получает идентификаторы категорий из опций темы, где мне нужно отобразить "light is green"

function am_get_cat_layout_ids()
{

                global $am_option;
                $catnumend = $am_option['main']['category_onecolumn_hidden']-1;
                for($i=0; $i<$catnumend; $i++)
                {

                    $value = $am_option['main']['category_onecolumn_'.$i].',';


                }

                return $value;
}

, если я отображаю значение $ вместо return, яполучить идентификатор категории скажем 2, 15, 7, 34, хорошо, но если я сделаю это:

  <?php 

if (is_category(array(am_get_cat_layout_ids())) {
 echo 'Light is GREEN';
  }else {
 echo 'Light is RED}';
 ?>

это не работает.

что-нибудь, что можно сделать, чтобы заставить его работать?

Спасибо, Срик

Ответы [ 3 ]

0 голосов
/ 07 ноября 2011

Если ваша am_get_cat_layout_ids() функция возвращает 2, 15, 7, 34,, то вы должны сделать:

if (is_category(explode(', ',trim(am_get_cat_layout_ids(),','))) {
 echo 'Light is GREEN';
  }else {
 echo 'Light is RED}';
0 голосов
/ 07 ноября 2011

То, что вы сделали, это массив, содержащий одну строку, которая имеет разделенные запятыми числа. Вы хотите построить массив чисел.

function am_get_cat_layout_ids()
{
    global $am_option;

    $ids = array(); // create array
    $catnumend = $am_option['main']['category_onecolumn_hidden']-1;

    for($i=0; $i<$catnumend; $i++)
    {
        $ids[] = $am_option['main']['category_onecolumn_'.$i]; // add value to array
    }
    return $ids; // return array
}

Ваш оригинальный код был эквивалентен этому:

if (is_category(array( "9, 13, 24,")) {

Принимая во внимание, что этот новый код эквивалентен коду в начале вопроса:

if (is_category(am_get_cat_layout_ids()) {
0 голосов
/ 07 ноября 2011

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

function am_get_cat_layout_ids()
{
    global $am_option;
    $ret = array();
    $catnumend = $am_option['main']['category_onecolumn_hidden']-1;

    for($i=0; $i<$catnumend; $i++)
    {
            $ret[] = $am_option['main']['category_onecolumn_'.$i];
    }

    return $ret;
}

и

if (is_category(am_get_cat_layout_ids()) {
    echo 'Light is GREEN';
}else {
    echo 'Light is RED}';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...