回答編集履歴
1
ぜんぜんちがってた
answer
CHANGED
@@ -1,11 +1,37 @@
|
|
1
|
-
|
1
|
+
全面改訂
|
2
2
|
|
3
|
+
## ご検討いただきたい点
|
4
|
+
* 描画時にロジックを判断している→描画は表示用のデータを出すだけ。値を加工して"checked"にすることは妥当だが、このidが別の配列に入っているか、みたいな判断は事前に解決すべき
|
5
|
+
* DBから取得したっぽい配列だが、であればDB上でJOINしたほうが早い→今はphpでDBのjoinをしているようなもので、バグを生じやすいうえに、性能もよくない
|
6
|
+
|
7
|
+
## 現状のまま直すとしたら
|
8
|
+
幸いなことに質問日の時点でサポートされているのはPHP5.6以上。つまり、DBっぽいデータをハンドルするなら[array_column (PHP 5 >= 5.5.0, PHP 7)](https://secure.php.net/manual/ja/function.array-column.php)が使えます。
|
9
|
+
|
3
10
|
```php
|
11
|
+
<?php
|
12
|
+
$result_info = [
|
4
|
-
|
13
|
+
['user_id' => '0014'],
|
14
|
+
['user_id' => '1234'],
|
15
|
+
['user_id' => '2222'],
|
16
|
+
['user_id' => '3333'],
|
17
|
+
];
|
18
|
+
//var_export($result_info);
|
5
|
-
$
|
19
|
+
$result_up = [
|
20
|
+
['user_min' => 'あああ', 'user_id'=>'0014'],
|
21
|
+
['user_min' => 'いいい', 'user_id'=>'1234'],
|
22
|
+
['user_min' => 'ううう', 'user_id'=>'2222'],
|
23
|
+
['user_min' => 'えええ', 'user_id'=>'3333'],
|
24
|
+
['user_min' => 'おおお', 'user_id'=>'9999'],
|
25
|
+
];
|
6
|
-
|
26
|
+
//var_export($result_up);
|
27
|
+
|
28
|
+
$who_has_schedule = array_column($result_info, 'user_id');
|
29
|
+
$ordered_user_list = array_column($result_up, null, 'user_id');
|
30
|
+
//var_export($uids);
|
31
|
+
//var_export($user_list);
|
7
|
-
foreach($
|
32
|
+
foreach($ordered_user_list as $id => $row) {
|
33
|
+
echo "<input type='checkbox' name='user_id[]' value='{$id}' id='{$id}'".(in_array($id, $who_has_schedule, false)?" checked ":"").">";
|
34
|
+
echo "<label for='{$id}'>{$row['user_min']}</label>";
|
8
|
-
echo
|
35
|
+
echo PHP_EOL;
|
9
|
-
echo $pair[1];
|
10
36
|
}
|
11
37
|
```
|