Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание многомерного динамического массива 
V
    Опции темы
K0T9I
Дата 5.4.2011, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 20.11.2009

Репутация: 2
Всего: 2



Код

$path = "/root/user/login/";
set_value($path,'blabla');
get_value($path);
clear_value($path);
delete_key($path);

функцией set_value необходимо получить массив вида:
Код

[root] => Array
        (
            [user] => Array
                (
                    [login] => blabla
                )

        )

get_value, clear_value, delete_key - получает значение, очищает значение, удаляет ключ соответственно.
сейчас все эти функции у меня работают через eval();
возможно сделать как-то по другому? не хочется использовать eval.
PM MAIL   Вверх
KLeonid
Дата 5.4.2011, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Entropy
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 5.7.2007
Где: Shpongleland

Репутация: 1
Всего: 1



А можно по русски? smile.
Причем тут эвал, не понятно. А тем более причем тут получение чего либо в сеттере? smile 
Код, пожалуйста smile .
PM MAIL   Вверх
K0T9I
Дата 5.4.2011, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 20.11.2009

Репутация: 2
Всего: 2



Код

function path_to_array($path)
{
    $path_array = explode('/',$path);
    $result = '';
    foreach ($path_array as $value){
        if (empty($value)){
            continue;
        }
        $result .= "['{$value}']";
    }
    return '$buffer_array'.$result;
}

function set_value(&$array,$path,$value)
{
    $result = path_to_array($path);
    $eval = "{$result}='{$value}';";
    $buffer_array = $array;
    eval($eval);
    $array = $buffer_array;
}

function get_value($array,$path)
{
    $eval = path_to_array($path);
    $eval = "return {$eval};";
    $buffer_array = $array;
    return eval($eval);
}

set_value($array,'/root/user1/login','blabla');
set_value($array,'/root/user2/login','lalala');
echo '<pre>';
print_r($array);
echo '</pre>';
echo (get_value($array,'/root/user1/login'));


пример выводит
Код

Array
(
    [root] => Array
        (
            [user1] => Array
                (
                    [login] => blabla
                )

            [user2] => Array
                (
                    [login] => lalala
                )

        )

)
blabla


Это сообщение отредактировал(а) K0T9I - 5.4.2011, 02:25
PM MAIL   Вверх
ksnk
Дата 5.4.2011, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



php уже достаточно развит, чтобы в нем можно было использовать классы.
Код

class store {

    private $array;

    private function &path_to_array($path)
    {
        $path_array = explode('/',$path);
        $result = &$this->array;
        foreach ($path_array as $value){
            if(!empty($value)){
                if(!is_array($result)) {
                    $result[$value]=array();
                }
                $result=&$result[$value];
            }
        }
        return $result;
    }

    function get(){
        return $this->array;
    }

    function set_value($path,$value)
    {
        $result = &$this->path_to_array($path);
        $result=$value;
    }

    function get_value($path)
    {
        return $this->path_to_array($path);
    }
}

$store=new store();
$store->set_value('/root/user/login','blabla');
echo $store->get_value('/root/user/login');
echo '<pre>';
print_r($store->get());
echo '</pre>';


и никаких eval'ов.

K0T9I, а можно полюбопытствовать, какие языки изучались до php?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0729 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.