teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2017/11/11 12:41

投稿

s8_chu
s8_chu

スコア14731

answer CHANGED
@@ -32,4 +32,30 @@
32
32
 
33
33
  var_dump(array_count_values($input1) === acv($input1));// true
34
34
  var_dump(array_count_values($input2) === acv($input2));// true
35
+ ```
36
+
37
+ **(追記)**
38
+ > 入力がそもそも一行だからループになっていない
39
+
40
+ whileループの前で予め`explode`で分割しておくことで解決できます。
41
+
42
+ > keyに色名とvalueにそれぞれの色の出現回数をいれたいのにそれも出来てない
43
+
44
+ 結果を入れておく配列内にその色名のキーが存在するかどうかを調べて、ある場合はその要素の値に1を足し、無ければ1を代入するようにすれば、キー名を色の名前にして値をその色の出現回数にすることができると思います。
45
+
46
+ ```PHP
47
+ <?php
48
+ $input = "white yellow blue blue yellow blue";
49
+ $key_value = explode(" ", $input);
50
+ $result = [];
51
+ $i = 0;
52
+
53
+ while ($i < count($key_value)) {
54
+ $key = $key_value[$i];
55
+ $value = isset($result[$key]) ? $result[$key] + 1 : 1;
56
+ $result[$key] = $value;
57
+ $i++;
58
+ }
59
+
60
+ var_dump($result === array_count_values($key_value));// true
35
61
  ```