質問編集履歴
1
質問内容の追記
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番最初にもってきたい
|