回答編集履歴

1

ぜんぜんちがってた

2018/10/25 01:48

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -1,20 +1,72 @@
1
+ 全面改訂
2
+
3
+
4
+
5
+ ## ご検討いただきたい点
6
+
7
+ * 描画時にロジックを判断している→描画は表示用のデータを出すだけ。値を加工して"checked"にすることは妥当だが、このidが別の配列に入っているか、みたいな判断は事前に解決すべき
8
+
1
- やりたい、zipですかね。長うにあわせられて足りないのは、nullになりますが。
9
+ * DBから取得しっぽ配列だが、であればDB上でJOINしたほうが早い→今はphpDBのjoinをしているようなもので、バグを生じやすいうに、性能もよくない
10
+
11
+
12
+
13
+ ## 現状のまま直すとしたら
14
+
15
+ 幸いなことに質問日の時点でサポートされているのはPHP5.6以上。つまり、DBっぽいデータをハンドルするなら[array_column (PHP 5 >= 5.5.0, PHP 7)](https://secure.php.net/manual/ja/function.array-column.php)が使えます。
2
16
 
3
17
 
4
18
 
5
19
  ```php
6
20
 
7
- $a = ["a", "b", "c"];
21
+ <?php
8
22
 
9
- $b = [1, 2, 3, 4];
23
+ $result_info = [
10
24
 
11
- $zip = array_map(null, $a, $b);
25
+ ['user_id' => '0014'],
12
26
 
13
- foreach($zip as $pair) {
27
+ ['user_id' => '1234'],
14
28
 
15
- echo $pair[0];
29
+ ['user_id' => '2222'],
16
30
 
31
+ ['user_id' => '3333'],
32
+
33
+ ];
34
+
35
+ //var_export($result_info);
36
+
37
+ $result_up = [
38
+
39
+ ['user_min' => 'あああ', 'user_id'=>'0014'],
40
+
41
+ ['user_min' => 'いいい', 'user_id'=>'1234'],
42
+
43
+ ['user_min' => 'ううう', 'user_id'=>'2222'],
44
+
45
+ ['user_min' => 'えええ', 'user_id'=>'3333'],
46
+
47
+ ['user_min' => 'おおお', 'user_id'=>'9999'],
48
+
49
+ ];
50
+
51
+ //var_export($result_up);
52
+
53
+
54
+
55
+ $who_has_schedule = array_column($result_info, 'user_id');
56
+
57
+ $ordered_user_list = array_column($result_up, null, 'user_id');
58
+
59
+ //var_export($uids);
60
+
61
+ //var_export($user_list);
62
+
63
+ foreach($ordered_user_list as $id => $row) {
64
+
65
+ echo "<input type='checkbox' name='user_id[]' value='{$id}' id='{$id}'".(in_array($id, $who_has_schedule, false)?" checked ":"").">";
66
+
67
+ echo "<label for='{$id}'>{$row['user_min']}</label>";
68
+
17
- echo $pair[1];
69
+ echo PHP_EOL;
18
70
 
19
71
  }
20
72