配列

配列はわかったようでよくわからない。
漢方処方をXMLで保持していて、PHPで書き出すページは割と便利に使えている。
けれども、これはすべて一つのページで機能している。
正直、XMLはPHPで非常に扱いやすいと思う。

これをLaravelなどのMVCモデルとかに近づけるとするとどうするか。

Viewに渡すのは配列になる。
前回うまくいったと思ったが、それは階層を考えなかったから。
階層のあるXMLを配列にする方法はネットを探してもなかなかない。
array[]で配列を作っていくにしても、階層を表すため、途中にforeachを入れるとエラーになる。
書き方の問題かと思うが、arrayで途中に配列は入れることができるとあるが、例は静的に書いてあるだけで、動的に入れ込む例はない。
再帰的に読み込む、という難しい例はいくつかあったが、よくわからない。

Compact関数を使ってみた。

必要な値を変数にとりだしておいて、階層については、そこで配列を作って、全部含めてcompactにする。
OKだった。
多次元にするには変数名に[]をつける。これがないと最後のレコードだけしか取れない。

    foreach ($xmls -> Recipe as $data){
            $ID = trim($data -> tNo);
            $Kana = trim($data -> 漢方カナ);
            $Name = trim($data -> 漢方);
            foreach ($data -> Shoyaku as $dataS){
                $SName = trim($dataS -> 生薬名);
                $SHaigo = trim($dataS -> 配合);
                $shoyaku[]=compact('SName','SHaigo');
            }
           
            $items[] = compact('ID','Kana','Name','shoyaku');
            $shoyaku=[];
       }
CAT