1

我正在开发一个项目,该项目将根据存储在文本文件中的数据生成大量表。

无论如何我想让我的代码看起来像这样..

   function Phone($arg){
   ....
   return $phone_nr
   }

   function Adress($arg){
   ....
   return $adress_nr
   }

   function Arr_push($args) {
        for ($i = 1; $i < func_num_args(); $i++) {
            $keys[$i - 1] = func_get_arg($i);
        }
        foreach ($keys as $key) {
            $arr_return[] = $key;
        }
        return $arr_return;
    }

    $Table1[] = Arr_push($DB,'Name:', 'John', 'Gender:', 'male');
    $Table1[] = Arr_push($DB,'phone:', Phone('John'), 'Address', Adress('John'));

    $table = new TableClass();
    $table->show($Table1);

    ($DB is the database a 2d array with keys and values)

这可以做到吗?还是我必须为此编写某种解析器

"Parser method"

 $Table1[] = Arr_push('phone:', '^phone,John', 'Address', ^adress,John');

 in Arr_push function check if the string start with a '^'. In that case explode
 it on the delimiter ',' and have switch loop for the different cases. 

我一直在寻找这几天没有,所以我不得不提出这个问题。

扩展信息...

文件看起来像这样......

1 2 PRD~1 3 ISO 8859-1~1 4 0 ~2 1 Rundvirke Skog~2 2 VIRK1209.APT~3 1 311214~3 2 000000~3 3 1 ~803 4 311214~3 5 Valmet~3 6 911.3~ 3 7 ........它一直在继续

使用糟糕的正则表达式进行了管理:

%((\d{1,}\s?)+(?=~))|(((\d{1,}\s\d{1,})\s?\r?\n)(^(\w|\s|[å-ö]|[Å-Ö]|,|\.|
    \?|-|\?|@|\*|/)+))%mx 

将其读入这样的二维数组...

[Var_id] [Type]  [Data]
 1        4       0 
 1        3       ISO 8859-1
 1        2       PRD
 2        2       VIRK1209.APT
 2        1       Rundvirke Skog
 3        6       911.3
 3        7       Valmet 
 3        8       360.1/360.2
 3        5       Valmet
 3        3       1
 3        2       000000
  .....

我想要的输出是带有一些数据的表格,例如

| Machine   | Valmet  | Type  | 911.3
| ......    | ......

数据(Valmet 和 911.3)由其 [Var_id] 和 [Type] 调用

所以当做那些表时,我会很高兴有一个“干净”的代码

   $array[] = arr_push($DB, 'Produktion:', '', 'Apteringsinstruktion:', '');
    $array[] = arr_push($DB, 'FilNamn:', '^get, 1, 2', 'Filnamn:', '^get, 2, 2');
    $array[] = arr_push($DB, 'Nollställ datum:', '^get, 11, 4', 'Indetitetsuppgifter', '^get, 2, 1');
    $array[] = arr_push($DB, 'Lagrind datum:', '^get, 12, 4', 'Skapat datum:', '^get, 13, 4');
    display_table($array);

    How the input looks like now with the "parser" method.

那么有没有办法用函数调用替换这个 '^get,var_id,type' 解析器呢?

有关 StandforD 标准的更多信息,请访问:http ://www.skogforsk.se/en/About-skogforsk/Collaboration-groups/StanForD/

更多关于解释 [var_id] [type] 的文件:http ://www.skogforsk.se/PageFiles/60712/AllVarNo_ENG_120418.pdf 。

背景:Harvester 正在制作 prd 文件,其中包括所有的木材、体积和时间等。市场上没有免费的查看器(据我所知)。所以我正在做一个 prd 查看器 i PHP。

我不知道在哪里托管它,所以我不想要一个 sql 服务器作为后端。

4

2 回答 2

0

这就是我目前要走的路线。消极的部分是“函数调用”

'^abc,a'

将与语法突出显示中的其他字符串具有相同的颜色(使用 netbeans)。正在使用 lambda 进行测试,但它似乎无法在数组中工作。

为什么这不起作用?

$hello = function() {
   return 'hello world';
};

$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry", hello());
print_r($stack);
于 2012-09-20T05:02:30.070 回答
0
function abc($a)
{
    return '2'.$a;
}

$array = Array('a','^abc,a');
foreach ($array as $key => $value)
{
    $a = substr($value,0,1);
    if ($a=='^')
    {
        $e = explode(',',$value);
        $func = substr($e[0],1);
        unset($e[0]);
        // return any second, thrird... commas
        $value2 = implode(',',$e);
        $value3 = call_user_func_array($func,Array($value2));
        $array[$key] = $value3;
    }
}

echo var_dump($array);

结果:

array (size=2)
  0 => string 'a' (length=1)
  1 => string '2a' (length=2)
于 2012-09-20T04:02:26.263 回答