PHP получить переменную из функции - PullRequest
1 голос
/ 05 августа 2010
function first() {
    foreach($list as $item ) {
        ${'variable_' . $item->ID} = $item->title;
        // gives $varible_10 = 'some text'; (10 can be replaced with any number)
    }
    $ordinary_variable = 'something';
}

Как получить значения этой функции внутри другой функции?

Как:

function second() {
    foreach($list as $item ) {
        get ${'variable_' . $item->ID};
        // getting identical value from first() function
    }
    get $ordinary_variable;
}
  • Мы знаем, что $variable_id (id числовой) ужесуществует в first()
  • $list - это Array(), который может иметь более 100 значений.
  • $ordinary_variable - это строка.

Благодаря.

Ответы [ 2 ]

5 голосов
/ 05 августа 2010

Вы можете позволить первой функции вернуть массив:

function first() {
    $values = array();
    foreach($list as $item ) {
        $values['variable_' . $item->ID] = $item->title;
        // gives $varible_10 = 'some text'; (10 can be replaced with any number)
    }
    $values['ordinary_variable'] = 'something';
    return $values;
}

и затем:

function second() {
    $values = first();
    foreach($list as $item ) {
        $values['variable_' . $item->ID];
        // getting identical value from first() function
    }
    $values['ordinary_variable'];
}

или передать его в качестве параметра:

second(first());

Я бы посоветовал против global, так как это приводит к побочным эффектам и усложняет поддержку / отладку кода.

0 голосов
/ 05 августа 2010

${'variable_' . $item->ID} выходит за рамки.Возможно, вам следует создать глобальный массив и хранить их там.

упрощенный пример

$myvars = array();

function first() {
  global $myvars;
  ...
  $myvars['variable_' . $item->ID] = $item->title;
}

function second() {
  global $myvars;
  ...
  echo $myvars['variable_' . $item->ID];
}
...