回答編集履歴

5

ソートのコードを実際のデータ型に合わせる

2025/03/26 00:10

投稿

juner
juner

スコア744

test CHANGED
@@ -116,16 +116,31 @@
116
116
  例えばこんな感じでいけませんでしょうか?
117
117
  ```php
118
118
  <?php
119
+ $departments = [(object)[
120
+ 'id' => 'A',
121
+ 'name' => 'ANAME'
122
+ ],(object)[
123
+ 'id' => 'B',
124
+ 'name' => 'BNAME',
125
+ ],(object)[
126
+ 'id' => 'C',
119
- $numArray = ['A', 'B', 'C', 'E', 'D'];
127
+ 'name' => 'CNAME',
128
+ ], (object)[
129
+ 'id' => 'E',
130
+ 'name' => 'ENAME',
131
+ ]
132
+ , (object)[
133
+ 'id' => 'D',
134
+ 'name' => 'DNAME',
135
+ ]];
120
136
  $top = 'B';
121
- usort($numArray, function($arg1, $arg2) use ($top) {
137
+ usort($departments, function($arg1, $arg2) use ($top) {
122
- if ($arg1 == $top) return -1;
138
+ if ($arg1->id == $top) return -1;
123
- if ($arg2 == $top) return 1;
139
+ if ($arg2->id == $top) return 1;
124
- if ($arg1 == $arg2) return 0;
125
140
  return 0;
126
141
  });
127
142
 
128
- echo var_export($numArray, true);
143
+ echo var_export($departments, true);
129
144
  ```
130
145
 
131
- [playground](https://php-play.dev/?c=DwfgDgFmBQAkB2BXAtgQQE7oIYE8AEAvHgNoDkqpANHqQEJU0DCDpAoiwCKkC6A3HABcA9mEI16-RAGch6AQAoEKDNhzUAZongBjAQEsh8RVnQBzAIzVYJ0wCYAlHmkBTPIuFhHAb2h4-ePXU3azNzQiJYD0d0ZwFEdHg8AFpzfn8AoOMzW3C8SJFo2PjE1N9-QOCbMIIImwc8GLiEvAAGNP9G4tb%2BAF97fmhnbQghPAA3EwB9ZwAPMFkFJTRMXGoBdERnfuhoIA&v=8.4&f=html)
146
+ [playground](https://php-play.dev/?c=DwfgDgFmBQAkAmBTMBDATgFwLaIHYYGcACAXiIG0AKAewCMArRAYwwEpzoiuiByAS3g9SAPl4BBHgBpO3HrhQ4hJUTzEA5MQFkAoj2gBdSTQbM2HbrwFKVAISkyuchYmu8bGnfcPHGLdg8tBEV4AYXsLJ0VgnhCPXWlDIh9TfwiraPiAyJcMuK9oSSS6XzMs9OVeABFw2Xkoip5KvIT9AG44DGowUjcedoBXAmpMSgRkdGw8QkKAM37cFj5qXFH0AHMARkLYdYAmViJBxCTYTrADgG8AvhmT9Y2AWmEBUjJTroO0RAx%2BtFwiB4bdoWG53NBrXZPF4kN5nT7fX7-IEBL4-P5EAAM7QAvqx2tBmBBqEQAG7oAD6iAAHmBhhhRkhUJgcPgCIUMGh%2Bog8dBoEA&v=8.4&f=console)

4

特定キーを上に上げるソート

2025/03/25 08:25

投稿

juner
juner

スコア744

test CHANGED
@@ -108,3 +108,24 @@
108
108
  ```
109
109
 
110
110
  以上。
111
+
112
+ # 追伸
113
+
114
+ ## 配列の特定値だけ一番上にする方法
115
+
116
+ 例えばこんな感じでいけませんでしょうか?
117
+ ```php
118
+ <?php
119
+ $numArray = ['A', 'B', 'C', 'E', 'D'];
120
+ $top = 'B';
121
+ usort($numArray, function($arg1, $arg2) use ($top) {
122
+ if ($arg1 == $top) return -1;
123
+ if ($arg2 == $top) return 1;
124
+ if ($arg1 == $arg2) return 0;
125
+ return 0;
126
+ });
127
+
128
+ echo var_export($numArray, true);
129
+ ```
130
+
131
+ [playground](https://php-play.dev/?c=DwfgDgFmBQAkB2BXAtgQQE7oIYE8AEAvHgNoDkqpANHqQEJU0DCDpAoiwCKkC6A3HABcA9mEI16-RAGch6AQAoEKDNhzUAZongBjAQEsh8RVnQBzAIzVYJ0wCYAlHmkBTPIuFhHAb2h4-ePXU3azNzQiJYD0d0ZwFEdHg8AFpzfn8AoOMzW3C8SJFo2PjE1N9-QOCbMIIImwc8GLiEvAAGNP9G4tb%2BAF97fmhnbQghPAA3EwB9ZwAPMFkFJTRMXGoBdERnfuhoIA&v=8.4&f=html)

3

微修正

2025/03/25 07:19

投稿

juner
juner

スコア744

test CHANGED
@@ -29,6 +29,7 @@
29
29
  # `laravelcollective/html`
30
30
 
31
31
  もしも `laravelcollective/html` を使っているのでしたら、公式ドキュメントはこれでしょうか?
32
+ ※ただし、 `laravelcollective/html` 自体は最新版は廃止扱いみたいですね。
32
33
 
33
34
  > ### Drop-Down Lists
34
35
  > Generating A Drop-Down List
@@ -89,8 +90,7 @@
89
90
  > ```
90
91
  >
91
92
  > #### コレクションではダメな理由
92
- > 第二引数に渡した配列の値が is_array() を条件として optgroup
93
+ > 第二引数に渡した配列の値が is_array() を条件として optgroup を作るかどうかを判定しているからです。
93
- を作るかどうかを判定しているからです。
94
94
  >
95
95
  > ```php
96
96
  > public function options($options)
@@ -106,4 +106,5 @@
106
106
  ```
107
107
  {{ html()->select($name, $options) }}
108
108
  ```
109
+
109
- ```
110
+ 以上。

2

spatie/laravel-html の追加

2025/03/25 07:17

投稿

juner
juner

スコア744

test CHANGED
@@ -73,3 +73,37 @@
73
73
  > ```
74
74
 
75
75
  https://laravel.com/docs/11.x/blade#additional-attributes
76
+
77
+ # `spatie/laravel-html`
78
+
79
+ [laravel: laravelcollective/html から spatie/laravel-html に引っ越す](https://sibogli.hateblo.jp/entry/2023/10/20/211133#select-%E3%81%AE%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%94%E3%83%B3%E3%82%B0) に下記の記述がありました。
80
+
81
+ > ### select のグルーピング
82
+ > `laravelcollective/html` では `select()` へネストにしたコレクション`([string => Collection])`を渡せば勝手に `optgroup` を作ってくれましたが、
83
+ `spatie` はコレクションが渡されても `optgroup` にしてくれません。
84
+ >
85
+ > 結論から言えば、コレクションを配列に変換したものを第二引数に渡しましょう。
86
+ > ```
87
+ > {{ html()
88
+ > ->select('area_manager_id', $areaManagers->toArray()) }}
89
+ > ```
90
+ >
91
+ > #### コレクションではダメな理由
92
+ > 第二引数に渡した配列の値が is_array() を条件として optgroup
93
+ を作るかどうかを判定しているからです。
94
+ >
95
+ > ```php
96
+ > public function options($options)
97
+ > {
98
+ > return $this->addChildren($options, function ($text, $value) {
99
+ > if (is_array($text)) {
100
+ > return $this->optgroup($value, $text);
101
+ > }
102
+ > ```
103
+
104
+ とあり、次のパターンでいけると思われます。
105
+
106
+ ```
107
+ {{ html()->select($name, $options) }}
108
+ ```
109
+ ```

1

blade template の例を追加 あと見出しの追加

2025/03/25 07:04

投稿

juner
juner

スコア744

test CHANGED
@@ -1,4 +1,9 @@
1
- 公式ドキュメントを見た感じ、第二引数が options なのですが、何を元に無理と判断したのでしょうか?とても気になります。(ただし、 Laravel 公式の Form 自体は 4.x まで存在しており、11にはないです。
1
+ 公式ドキュメントを見た感じ、第二引数が options なのですが、何を元に無理と判断したのでしょうか?とても気になります。
2
+ (ただし、 Laravel 公式の Form 自体は 4.2 まで存在しており、11.x にはないです。
3
+
4
+ # Laravel 4.2
5
+
6
+ Laravel 4.2 の ドキュメントだと次の様にあります。
2
7
 
3
8
  > ### Drop-Down Lists
4
9
  > Generating A Drop-Down List
@@ -21,6 +26,7 @@
21
26
 
22
27
  https://laravel.com/docs/4.2/html#drop-down-lists
23
28
 
29
+ # `laravelcollective/html`
24
30
 
25
31
  もしも `laravelcollective/html` を使っているのでしたら、公式ドキュメントはこれでしょうか?
26
32
 
@@ -50,3 +56,20 @@
50
56
  > ```
51
57
 
52
58
  https://laravelcollective.com/docs/6.x/html#drop-down-lists
59
+
60
+ # blade template
61
+
62
+ また、単に select タグを blade template に書くのであれば Laravel に下記の記述があります。
63
+
64
+ > Likewise, the `@selected` directive may be used to indicate if a given select option should be "selected":
65
+ > ```php
66
+ > <select name="version">
67
+ > @foreach ($product->versions as $version)
68
+ > <option value="{{ $version }}" @selected(old('version') == $version)>
69
+ > {{ $version }}
70
+ > </option>
71
+ > @endforeach
72
+ > </select>
73
+ > ```
74
+
75
+ https://laravel.com/docs/11.x/blade#additional-attributes