配列はわかったようでよくわからない。
漢方処方を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=[];
}