回答編集履歴
1
ぜんぜんちがってた
test
CHANGED
@@ -1,20 +1,72 @@
|
|
1
|
+
全面改訂
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
## ご検討いただきたい点
|
6
|
+
|
7
|
+
* 描画時にロジックを判断している→描画は表示用のデータを出すだけ。値を加工して"checked"にすることは妥当だが、このidが別の配列に入っているか、みたいな判断は事前に解決すべき
|
8
|
+
|
1
|
-
|
9
|
+
* DBから取得したっぽい配列だが、であればDB上でJOINしたほうが早い→今はphpでDBの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
|
-
|
21
|
+
<?php
|
8
22
|
|
9
|
-
$
|
23
|
+
$result_info = [
|
10
24
|
|
11
|
-
|
25
|
+
['user_id' => '0014'],
|
12
26
|
|
13
|
-
|
27
|
+
['user_id' => '1234'],
|
14
28
|
|
15
|
-
e
|
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
|
69
|
+
echo PHP_EOL;
|
18
70
|
|
19
71
|
}
|
20
72
|
|