Решение задачки для php программистов с хабра

5 апреля 2011

Увидел на хабре задачку при собеседовании для php программистов http://habrahabr.ru/blogs/php/116686/

Решил попробовать сам ее решить, вроде не сложно. вместе с отладкой, сделал за ~20минут, т.е. в норматив не уложился, что херово.

Получилось вот так,  хз насколько это оптимально. Есть идеи что улучшить?

<?php
function read_conf($path)
{
    $f=file_get_contents($path);
    //разбиваем на строки
    $lines=explode("\n",$f);
    $tmp=array();
 
    //режем строки на key=>value
    foreach($lines as $v)
    {
        if (trim($v)!="")
        {
            list($key,$value)=explode("=",$v,2);
            $tmp[trim($key)]=trim($value);
        }
    }
 
    $res=array();
    //режем ключи по параметрам
    foreach ($tmp as $key=>$value)
    {
        $keys=explode(".",$key);
        if (count($keys)!=1)
        {
            //тут будем делать подмассивчики
            $key=array_pop($keys);
            $first_key=array_shift($keys);
            if (!isset($res[$first_key]))
            {
                $res[$first_key]=array();
            }
            $pres=&$res[$first_key];
            while (count($keys)!= 0)
            {
                $tmp_key=array_shift($keys);
                if (!isset($pres[$tmp_key]))
                {
                    $pres[$tmp_key]=array();
                }
                $pres=&$pres[$tmp_key];
            }
            $pres[$key]=$value;
        }
        else
        {
            $res[$key]=$value;
        }
    }
    return $res;
}
print_r(read_conf("conf.ini"));
?>

Опубликовал:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *