前提・解決したいこと
配列内のデータで個数を抽出したい。(配列のkeyは変えずにvalueは変更し条件分岐を確認したい)
例えば、'fruit'と'price'の中で一番多い個数のものを抽出したい。
例 priceは150円のものが2個ある。
多分if文を使用していくのはわかっているのですが、二次元配列内のデータを
条件式に書く方法が思いつかず困っています。
重複チェックと並び替え個々の処理を完成しておりここは変更せずに
この後に条件分岐の処理を追加したい。
発生している問題
PHP
1コード 2<?php 3$shoppingBasket = [ 4 ['fruit' => 'apple', 'price' =>100], 5 ['fruit' => 'orange', 'price' =>150], 6 ['fruit' => 'grape', 'price' =>300], 7 ['fruit' => 'strawberry', 'price' =>150], 8]; 9 10 11function judge($shoppingBasket) { 12 // カートの重複チェック 13 if(count($shoppingBasket) === count(array_unique($shoppingBasket, SORT_REGULAR))){ 14 }else{ 15 return "重複"; 16 } 17 // カートの並び替え 18 function sortByKey($key_name, $sort_order, $array) { 19 foreach ($array as $key => $value) { 20 $standard_key_array[$key] = $value[$key_name]; 21 } 22 array_multisort($standard_key_array, $sort_order, $array); 23 return $array; 24 } 25 $shoppingBasket = sortByKey('price', SORT_ASC, $shoppingBasket); 26 27 //ここから処理を追加したい。 28 if() 29 30 return "150円のものが2個ある"; // 配列の中で最も多いvalueの値。今回の場合 31} 32 33echo judge($shoppingBasket).'です。'; 34 35
試したこと
array_count_valuesで全体のvalueの個数を抽出できたが
これを最も多い個数の一つだけを結果として抽出したい。
PHP
1<?php 2$shoppingBasket = [ 3 ['fruit' => 'apple', 'price' =>100], 4 ['fruit' => 'orange', 'price' =>150], 5 ['fruit' => 'grape', 'price' =>300], 6 ['fruit' => 'strawberry', 'price' =>150], 7]; 8$result_price = array_count_values(array_column($shoppingBasket, 'price')); 9$result_fruit = array_count_values(array_column($shoppingBasket, 'fruit')); 10print_r($result_price);//'price'の個数 11print_r($result_fruit);//'fruit'の個数 12//priceの結果 13Array 14( 15 [100] => 1 16 [150] => 2 //この値(150と2、又は2だけ)を抽出したい 17 [300] => 1 18) 19//fruitの結果 20Array 21( 22 [apple] => 1 23 [orange] => 1 24 [grape] => 1 25 [strawberry] => 1 26)
検索してみましたが考えが浮かばず相談させてください。
(そのQ&Aにも解説なし)
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー