質問編集履歴

1

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

2021/04/20 13:52

投稿

pegy
pegy

スコア243

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