質問編集履歴

5

前提・解決したいことの追記

2021/11/08 09:17

投稿

n_k23
n_k23

スコア21

test CHANGED
File without changes
test CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
 
84
84
 
85
- return "〜〜〜〜個"; // 配列の中で最も多いvalueの値。
85
+ return "150円のものが2ある"; // 配列の中で最も多いvalueの値。今回の場合
86
86
 
87
87
  }
88
88
 
@@ -134,7 +134,7 @@
134
134
 
135
135
  [100] => 1
136
136
 
137
- [150] => 2 //この値だけを抽出したい
137
+ [150] => 2 //この値(150と2、又は2だけ)を抽出したい
138
138
 
139
139
  [300] => 1
140
140
 

4

試したことを追記

2021/11/08 09:17

投稿

n_k23
n_k23

スコア21

test CHANGED
File without changes
test CHANGED
@@ -1,30 +1,26 @@
1
1
  ### 前提・解決したいこと
2
2
 
3
- 配列内のデータで個数を抽出したい。(配列のkeyは変えずにvalueは変更する)
3
+ 配列内のデータで個数を抽出したい。(配列のkeyは変えずにvalueは変更し条件分岐を確認したい)
4
4
 
5
- 例えば、appleが2や、100円のものが二つとった感じで
5
+ 例えば、'fruit'と'price'の中で一番多いのものを抽出した
6
6
 
7
- appleが3・・・といった感じで処理を追加していきます
7
+ priceは150円のものある
8
8
 
9
9
 
10
10
 
11
- 多分if文を使用していくのはわかっているのですが、配列内のデータを
11
+ 多分if文を使用していくのはわかっているのですが、二次元配列内のデータを
12
12
 
13
13
  条件式に書く方法が思いつかず困っています。
14
14
 
15
15
 
16
16
 
17
- 重複チェックと並び替え個々の処理を完成している。
17
+ 重複チェックと並び替え個々の処理を完成しておりここは変更せずに
18
18
 
19
- この後に処理を追加したい。
19
+ この後に条件分岐の処理を追加したい。
20
20
 
21
21
 
22
22
 
23
23
  ### 発生している問題
24
-
25
-
26
-
27
-
28
24
 
29
25
  ```PHP
30
26
 
@@ -40,7 +36,7 @@
40
36
 
41
37
  ['fruit' => 'grape', 'price' =>300],
42
38
 
43
- ['fruit' => 'apple', 'price' =>150],
39
+ ['fruit' => 'strawberry', 'price' =>150],
44
40
 
45
41
  ];
46
42
 
@@ -78,13 +74,15 @@
78
74
 
79
75
  $shoppingBasket = sortByKey('price', SORT_ASC, $shoppingBasket);
80
76
 
77
+
78
+
81
- return $shoppingBasket; //ここ処理が正くされてるか確認のため
79
+ //ここから処理を追加
80
+
81
+ if()
82
82
 
83
83
 
84
84
 
85
- //ここから処理を追加したい。
85
+ return "〜〜〜〜個"; // 配列の中で最も多valueの値
86
-
87
- ******
88
86
 
89
87
  }
90
88
 
@@ -94,79 +92,69 @@
94
92
 
95
93
 
96
94
 
97
- var_dump(judge($shoppingBasket)); //ここは並べ替えがうまくいっているか確認のため
98
95
 
99
- //結果
100
-
101
- array(4) {
102
-
103
- [0]=>
104
-
105
- array(2) {
106
-
107
- ["fruit"]=>
108
-
109
- string(5) "apple"
110
-
111
- ["price"]=>
112
-
113
- int(100)
114
-
115
- }
116
-
117
- [1]=>
118
-
119
- array(2) {
120
-
121
- ["fruit"]=>
122
-
123
- string(5) "apple"
124
-
125
- ["price"]=>
126
-
127
- int(150)
128
-
129
- }
130
-
131
- [2]=>
132
-
133
- array(2) {
134
-
135
- ["fruit"]=>
136
-
137
- string(5) "grape"
138
-
139
- ["price"]=>
140
-
141
- int(300)
142
-
143
- }
144
-
145
- [3]=>
146
-
147
- array(2) {
148
-
149
- ["fruit"]=>
150
-
151
- string(6) "orange"
152
-
153
- ["price"]=>
154
-
155
- int(150)
156
-
157
- }
158
-
159
- }
160
96
 
161
97
  ```
162
98
 
163
99
  ### 試したこと
164
100
 
101
+ array_count_valuesで全体のvalueの個数を抽出できたが
165
102
 
103
+ これを最も多い個数の一つだけを結果として抽出したい。
166
104
 
167
- ```
105
+ ```PHP
168
106
 
107
+ <?php
169
108
 
109
+ $shoppingBasket = [
110
+
111
+ ['fruit' => 'apple', 'price' =>100],
112
+
113
+ ['fruit' => 'orange', 'price' =>150],
114
+
115
+ ['fruit' => 'grape', 'price' =>300],
116
+
117
+ ['fruit' => 'strawberry', 'price' =>150],
118
+
119
+ ];
120
+
121
+ $result_price = array_count_values(array_column($shoppingBasket, 'price'));
122
+
123
+ $result_fruit = array_count_values(array_column($shoppingBasket, 'fruit'));
124
+
125
+ print_r($result_price);//'price'の個数
126
+
127
+ print_r($result_fruit);//'fruit'の個数
128
+
129
+ //priceの結果
130
+
131
+ Array
132
+
133
+ (
134
+
135
+ [100] => 1
136
+
137
+ [150] => 2 //この値だけを抽出したい
138
+
139
+ [300] => 1
140
+
141
+ )
142
+
143
+ //fruitの結果
144
+
145
+ Array
146
+
147
+ (
148
+
149
+ [apple] => 1
150
+
151
+ [orange] => 1
152
+
153
+ [grape] => 1
154
+
155
+ [strawberry] => 1
156
+
157
+ )
170
158
 
171
159
  ```
172
160
 

3

題名の変更

2021/11/08 06:54

投稿

n_k23
n_k23

スコア21

test CHANGED
@@ -1 +1 @@
1
- PHP 二次元関数でvalueの個数で出力を出したい。
1
+ PHP 二次元配列のvalueの個数を出したい。
test CHANGED
File without changes

2

題名の変更

2021/11/07 08:22

投稿

n_k23
n_k23

スコア21

test CHANGED
@@ -1 +1 @@
1
- PHP 二次元関数で片方キー並び替え
1
+ PHP 二次元関数でvalue個数で出力を出したい。
test CHANGED
File without changes

1

前提・解決したいことの追記

2021/11/07 08:03

投稿

n_k23
n_k23

スコア21

test CHANGED
File without changes
test CHANGED
@@ -7,6 +7,10 @@
7
7
  appleが3個・・・といった感じで処理を追加していきます。
8
8
 
9
9
 
10
+
11
+ 多分if文を使用していくのはわかっているのですが、配列内のデータを
12
+
13
+ 条件式に書く方法が思いつかず困っています。
10
14
 
11
15
 
12
16
 
@@ -84,7 +88,13 @@
84
88
 
85
89
  }
86
90
 
91
+
92
+
87
- var_dump(judge($shoppingBasket));
93
+ echo judge($shoppingBasket).'です。';
94
+
95
+
96
+
97
+ var_dump(judge($shoppingBasket)); //ここは並べ替えがうまくいっているか確認のため
88
98
 
89
99
  //結果
90
100