Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 13.12.2008, 11:09   #11
Arigato
СуперПрограммист
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Адрес: Россия РФ Регистрация: 27.07.2008
Сообщений: 14,048
Репутация: 3550
По умолчанию

Да, но ведь в функцию передается не имя переменной, а её значение.
Что, если у нас есть такой код:
Код:

$a = $b = 12345;
echo some_other_function ($a) . "<br />\n";
echo some_other_function ($b) . "<br />\n";
echo some_other_function (12345) . "<br />\n";

Что мы получим?
__________________
E-Mail: arigato.freelance@gmail.com
Arigato вне форума   Ответить с цитированием
Старый 13.12.2008, 11:48   #12
Arigato
СуперПрограммист
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Адрес: Россия РФ Регистрация: 27.07.2008
Сообщений: 14,048
Репутация: 3550
По умолчанию

Зачем нужна подобная функция, я так и не понял. Вот вариант решения (с примером):
PHP код:
function some_other_function_ex (& $var, & $root$elem false)
{
    
$keys array_keys ($root);
    for ( 
$i 0$i count ($keys); $i++ )
    {
        if ( 
$keys[$i] == "GLOBALS" ) continue;
        if ( 
is_array ($root[$keys[$i]]) ) 
        {
            
$result some_other_function_ex ($var$root[$keys[$i]], true);
            if ( 
$result !== false )
            {
                if ( 
$elem ) return "['" $keys[$i] . "']" $result;
                else return 
'$' $keys[$i] . $result;
            }
        }
        if ( 
$root[$keys[$i]] === $var )
        {
            
$temp $var;
            
$marker = ( $temp == "XXX" ) ? "YYY" "XXX";
            
$var $marker;
            if ( 
$root[$keys[$i]] == $marker )
            {
                
$var $temp;
                if ( 
$elem ) return "['" $keys[$i] . "']";
                else return 
'$' $keys[$i];
            }
            
$var $temp;
        }
    }
    return 
false;
}

function 
some_other_function (& $var)
{
    return 
some_other_function_ex ($var$GLOBALS);
}

$a $b 12345;
$arr = array ("a1" => "hello""b2" => array (=> "hello"=> "test"), "c3" => "hello");
echo 
some_other_function ($a) . "<br />\n";
echo 
some_other_function ($b) . "<br />\n";
echo 
some_other_function ($arr["a1"]) . "<br />\n";
echo 
some_other_function ($arr["c3"]) . "<br />\n";
echo 
some_other_function ($arr["b2"][1]) . "<br />\n"
Недостаток: работает только, если передаваемые аргументы являются глобальными переменными.
__________________
E-Mail: arigato.freelance@gmail.com
Arigato вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнуление переменной [MI_nor] Общие вопросы C/C++ 3 05.11.2008 19:01
Изменение переменной yura-cat Помощь студентам 7 20.09.2008 17:42
Работа с файлами (создание, удаление, открытие, связываение с переменной, очищение памяти переменной) Arkuz Общие вопросы Delphi 12 25.09.2007 20:47
Как изменить свойство объекта, если его имя находится в переменной? Aiden Компоненты Delphi 1 13.09.2007 07:57


17:34.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru