| 
 Передать переменную из функции во вложенную функцию Вот один из методов класса 
function go($mycbPhp, $mycb) {
  $repAll = "/(<\?(?:php)?.+\?>|<(?:c|m|=)%.+%e>)/sU";
  $resaults = array();
  if (!is_array($this->arrParsed)) return false;
  $evals = $this->arrParsed;
  foreach ($evals as $eval) {
   if ($eval['type']=='php') {
    $resaults[count($resaults)] = $mycbPhp($eval['string']);
   } elseif ($eval['type']=='templated') {
    $resaults[count($resaults)] = $mycb($eval['subtype'], $eval['string']);
   }
  }
  function replCB() {
   //сюда нужно передать переменную $resaults
   static $i = -1;
   $i++;
   return $resaults[$i];
  }
  return preg_replace_callback($repAll, 'replCB', $this->text);
 }
Как во вложенную функцию replCB передать переменную из функции go? global не помогает. | 
| 
 replCB($resaults)? Оо | 
| 
 Раед, А объяви function replCB() в самом начале после объявления $resaults = array() | 
| 
 Цитата: 
 Цитата: 
 | 
| 
 Цитата: 
 a= $resaults replCB(a) | 
| 
 Цитата: 
 Во-вторых replCB вызывается функцией preg_replace_callback => я не могу передать ей параметр | 
| 
 Раед, в PHP нет такого понятия как вложенные функции, поэтому все функции в PHP создаются в глобальном пространстве, ваш код это всеравно что написать так: 
function go($mycbPhp, $mycb) {
  $repAll = "/(<\?(?:php)?.+\?>|<(?:c|m|=)%.+%e>)/sU";
  $resaults = array();
  if (!is_array($this->arrParsed)) return false;
  $evals = $this->arrParsed;
  foreach ($evals as $eval) {
   if ($eval['type']=='php') {
    $resaults[count($resaults)] = $mycbPhp($eval['string']);
   } elseif ($eval['type']=='templated') {
    $resaults[count($resaults)] = $mycb($eval['subtype'], $eval['string']);
   }
  }
  return preg_replace_callback($repAll, 'replCB', $this->text);
 }
  function replCB() {
   //сюда нужно передать переменную $resaults
   static $i = -1;
   $i++;
   return $resaults[$i];
  }
И естественно переменную вы передать не сможете, но есть лишь один вариант, это сделать переменную глобальной.
function go($mycbPhp, $mycb) {
  $repAll = "/(<\?(?:php)?.+\?>|<(?:c|m|=)%.+%e>)/sU";
  $resaults = array();
  if (!is_array($this->arrParsed)) return false;
  $evals = $this->arrParsed;
  foreach ($evals as $eval) {
   if ($eval['type']=='php') {
    $resaults[count($resaults)] = $mycbPhp($eval['string']);
   } elseif ($eval['type']=='templated') {
    $resaults[count($resaults)] = $mycb($eval['subtype'], $eval['string']);
   }
  }
  $GLOBALS['resaults'] = &$resaults; // переносим переменную в глобальное пространство
  return preg_replace_callback($repAll, 'replCB', $this->text);
 }
  function replCB() {
   //сюда нужно передать переменную $resaults
   static $i = -1;
   $i++;
   return $GLOBALS['resaults'][$i]; // работаем с переменной в глобалке
  }
 | 
| 
 devote, Спасибо, что разъяснили. С php знаком мало, поэтому иногда пытаюсь перенести туда прелести js. | 
| 
 devote, Ещё такой вопрос: Как я уже сказал, функция go является методом класса. Чем тогда является функция replCB при определении внутри функции go, методом класса или глобальной функцией? | 
| 
 Цитата: 
 | 
| Часовой пояс GMT +3, время: 19:56. |