質問編集履歴

1

質問内容の追記

2017/12/06 04:52

投稿

iorin
iorin

スコア32

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ```
8
8
 
9
- Array
9
+ $Menu = Array
10
10
 
11
11
  (
12
12
 
@@ -458,7 +458,7 @@
458
458
 
459
459
 
460
460
 
461
- array(
461
+ $Menu = array(
462
462
 
463
463
  "あいうえお"=>array(
464
464
 
@@ -543,3 +543,77 @@
543
543
 
544
544
 
545
545
  ヒントだけでも頂けると嬉しいです。
546
+
547
+
548
+
549
+
550
+
551
+
552
+
553
+
554
+
555
+ ↓以下追記↓
556
+
557
+ まず、リンク先にあったように
558
+
559
+ use ickx\fw2\vartype\arrays\Arrays;
560
+
561
+ $result = Arrays::MultiColumn($array, ['type', 'id']);
562
+
563
+
564
+
565
+ を参考にして
566
+
567
+ use ickx\fw2\vartype\arrays\Arrays;
568
+
569
+ $result = Arrays::MultiColumn($Menu, ['First', 'Disp_Name']);
570
+
571
+ useはfunctionの外に出しておりtryの中にも入れていません
572
+
573
+
574
+
575
+ の2行と
576
+
577
+ public static function MultiColumn ($values, $keys = [], $filter = null) {
578
+
579
+ (略)
580
+
581
+ }
582
+
583
+ この関数をそのまま入れてみました。
584
+
585
+
586
+
587
+ そうすると以下の
588
+
589
+ エラーが出力され、ServerErrorで表示すら出来なくなりました。
590
+
591
+
592
+
593
+ PHP Fatal error: Trait 'ickx\fw2\vartype\arrays\Arrays' not found in [Path] on line 6
594
+
595
+ 6行目には use ickx\fw2\vartype\arrays\Arrays; を記述してあります
596
+
597
+
598
+
599
+ また、foreachで[First]が同じものを抽出し、そこから分割していってはどうかと思いましたが記述方法が思いつかず。。
600
+
601
+
602
+
603
+ 親子関係の条件は以下の通りです
604
+
605
+ ① [First]が「1」のものは同じグループであり[0]が「1000」のデータが親
606
+
607
+   ※[First]が「2」の場合は[0]が「2000」のデータが親
608
+
609
+ ② [First]が「1」かつ[Second]が1以上はデータは①の子
610
+
611
+ ③ [0]に同じ値が入っているものが同じグループとなり、[Disp_Number]が「0」だと親、「1以上」だと子
612
+
613
+   ※[0]が「X000」の孫
614
+
615
+ ④ [First]から[Fourth]の最大値は決まっておらず、データが存在する分だけ回したい
616
+
617
+ ⑤ 階層は最大で4次元連想配列である
618
+
619
+ ⑥ [0]が同じデータで、かつ[Disp_Number]が1以上の場合は1を1番最初にもってきたい