質問するログイン新規登録

質問編集履歴

1

質問内容を修正・加筆いたしました。

2021/04/20 13:52

投稿

pegy
pegy

スコア245

title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,50 @@
1
+ 【修正後】
2
+ ※下記の【修正前】の質問内容が適当ではなかったため、事後的に本質問内容を加筆する形で修正しております。
3
+
4
+ 以下のようなjsonデータを取得しており、当該データも基づきHTMLタグのネスト構造を作成することを意図しております。
5
+ ```JSON
6
+ $json_data ={
7
+ "attributes":{
8
+ "span": 1,
9
+ "u":1,
10
+ "s":0;
11
+ "blockquote":1;
12
+ }
13
+ }
14
+ ```
15
+ 上記の例で行けば結果的に作成したい構造は`<blockquote><span><u></u></span></blockquote>`となります。
16
+ ここで、考慮すべき点としては、以下の点となります。
17
+ - jsonデータの順番でタグのネスト化が決定されるわけではない
18
+ - 必ず、タグの順番は固定されている
19
+ つまり、以下のようにuとspanの位置が異なったとしても、spanは必ずuの外側のネスト構造をとるということになります。
20
+ ```JSON
21
+ $json_data ={
22
+ "attributes":{
23
+ "u":1,
24
+ "span": 1,
25
+ "s":0;
26
+ "blockquote":1;
27
+ }
28
+ }
29
+ ```
30
+
31
+ 実際には、上記の例以上に要素の種類があり、全てのタグについて、真偽値の1か0かのパターンを総当たりしてタグのネスト構造を出力することを検討しているのですが、以下のように各パターンを総当たりしてそれぞれの形式を出力すると非常に煩雑であると感じています。
32
+ ```php
33
+ $d_json = json_decode($json_data,true);
34
+ $b1 = $d_json["attributes"]["u"];
35
+ $b2 = $d_json["attributes"]["span"];
36
+ $b3 = $d_json["attributes"]["s"];
37
+ $b4 = $d_json["attributes"]["blockquote"];
38
+ if($b1 && $b2 && !$b3 && $b4){
39
+ echo "<blockquote><span><u></u></span></blockquote>";
40
+ }
41
+ ```
42
+
43
+ このようなケースで合理的、かつのちの管理面からも効果的なコーディングについてアドバイスをいただけると幸いです。
44
+ よろしくお願い申し上げます。
45
+
46
+ 【修正前】
47
+
1
48
  以下のような真偽値をとる3つの変数がありこれらが総当たりのような形で処理が分岐します。
2
49
  3つであれば、以下のように純粋な`IF文`や`IF-ELSE文`で対応できるのですが、例えば変数が10個の総当たりのような場合には見通しや管理も困難なことになります。
3
50