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 バルメット~3 6 911.3~ 3 7 .........

ひどい正規表現で管理しました:

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

このように2次元配列に読み込みます...

[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 ファイルを作成しています。市場には、そのための無料のビューアーはありません (私が知っていること)。だから私はPHPでprdビューアをやっています。

これをホストする場所がわからないので、バックエンドとして SQL サーバーは必要ありません。

4

2 に答える 2

0

それが今のところ私が行くルートです。ネガティブな部分は、「関数呼び出し」です

'^ abc、a'

構文の強調表示(netbeansを使用)では、他の文字列と同じ色になります。ランバダでテストしていましたが、アレイでは動作しないようです。

なぜこれが機能しないのですか?

$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 に答える