|
|
|
| Не могу передать значение глобального массива индекс является значение найденной цифры.
<?php
$gv=array('@1','@2','@3','@4','@5','@6','@7','@8','@9');
$q1='314561541';
preg_replace_callback("#([0-3])#", create_function('$matches','exit($gv[$matches[1]]);'), $q1);
?>
|
Должно вывести '@3', но выдаст ошибку. | |
|
|
|
|
|
|
|
для: ntro123
(12.03.2013 в 22:12)
| |
<?
preg_replace_callback("#([0-3])#", create_function('$matches','
global $gv;
exit($gv[$matches[1]]);
'), $q1);
|
| |
|
|
|
|
|
|
|
для: Drago
(13.03.2013 в 01:25)
| | Извиняюсь, кое что напутал. Если быть точнее то весь этот код находиться внутри функции:
<?php
function qwe()
{
$gv=array('@1','@2','@3','@4','@5','@6','@7','@8','@9');
$q1='314561541';
preg_replace_callback("#([0-3])#", create_function('$matches','
global $gv;
exit($gv[$matches[1]]);
'), $q1);
}
qwe();
?>
|
Без функции работает, как только внутрь функцию засунуть перестает. | |
|
|
|
|
|
|
|
для: ntro123
(13.03.2013 в 07:59)
| | Если PHP>=5.3.0 :
<?php
preg_replace_callback("#([0-3])#", function($matches) use($gv) {
return $gv[$matches[1]];
}, $q1);
|
Иначе, можно $gv внутрь анонимной функции поставить:
<?php
preg_replace_callback("#([0-3])#", create_function('$matches',
'$gv=array("@1","@2","@3","@4","@5","@6","@7","@8","@9");
return $gv[$matches[1]];')
, $q1);
|
И, не самый лучший вариант, принудительно в глобальную область видимости $gv присвоить:
<?php
$GLOBALS['gv']=array("@1","@2","@3","@4","@5","@6","@7","@8","@9");
$q1='314561541';
$r2 = preg_replace_callback("#([0-3])#", create_function('$matches',
'global $gv;
return $gv[$matches[1]];')
, $q1);
|
| |
|
|
|
|
|
|
|
для: ntro123
(13.03.2013 в 07:59)
| | Кстати, интересно как передать переменную в анонимную функцию в данном случае, если эта переменная не в global scope? | |
|
|
|
|
|
|
|
для: Igorek
(13.03.2013 в 12:21)
| | Спасибо все работает. | |
|
|
|