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

回答編集履歴

1

add

2021/02/02 04:19

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -1,3 +1,45 @@
1
1
  「ループしながら2つの配列をやりくりしようとする」から難しいのでは。
2
2
 
3
- そもそもで「そういう配列」を作ればループ内でごちゃごちゃ分岐書かなくて済みます。
3
+ そもそもで「そういう配列」を作ればループ内でごちゃごちゃ分岐書かなくて済みます。
4
+
5
+ 雑な例
6
+ ```php
7
+ <?php
8
+ $hoge = array("one", "two", "three", "two", "two");
9
+ $num = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
10
+
11
+ $ar = [];
12
+ $index = 0;
13
+ foreach($hoge as $a){
14
+ $row = [];
15
+ $row["hoge"] = $a;
16
+ $slice = [];
17
+ $slimit= 0;
18
+ switch($a){
19
+ case "one":
20
+ $slimit=1;
21
+ break;
22
+ case "two":
23
+ $slimit=2;
24
+ break;
25
+ case "three":
26
+ $slimit=3;
27
+ break;
28
+ }
29
+ $slice = array_slice($num,$index,$slimit);
30
+ $index += $slimit;
31
+ $numi=1;
32
+ foreach($slice as $numi=>$n){
33
+ $row["num".$numi] = $n;
34
+ }
35
+ $ar[] = $row;
36
+ }
37
+
38
+ var_dump($ar);
39
+ //あとはがんばって
40
+
41
+
42
+ ```
43
+
44
+ oneとか文字になってるから分岐が増える。
45
+ 構成見直したほうが良いと思う。