とりあえず最大数が同じだったときはカンマ区切りとします
PHP
1$book_titles = [
2 "php" => ["やさしいPHP", "独習PHP", "PHPフレームワークLaravel入門","test"],
3 "java" => ["やさしいJava", "Java言語で学ぶデザインパターン入門"],
4 "ruby" => ["たのしいRuby"],
5 "python" =>["たのしいPython", "スラスラわかるPython", "いちばんやさしいPythonの教本", "退屈なことはPythonにやらせよう"]
6];
7$a=array_reduce(array_keys($book_titles),function($x,$y) use($book_titles){
8 $x[count($book_titles[$y])][]=$y;
9 return $x;
10},[]);
11krsort($a);
12$b=array_shift($a);
13print "最大要素数のアイテムは".implode(",",$b);
解説
便宜上要素の順番は変えてあります。
以下実行結果とあわせて確認してみてください。
PHP
1<?PHP
2$book_titles = [
3 "ruby" => ["たのしいRuby"],
4 "php" => ["やさしいPHP", "独習PHP", "PHPフレームワークLaravel入門","test"],
5 "java" => ["やさしいJava", "Java言語で学ぶデザインパターン入門"],
6 "python" =>["たのしいPython", "スラスラわかるPython", "いちばんやさしいPythonの教本", "退屈なことはPythonにやらせよう"]
7];
8
9$keys=array_keys($book_titles);
10print "キーをリスト化<br>";
11print_r($keys);
12print "<hr>";
13$a=array_reduce($keys,function($x,$y) use($book_titles){
14 print "要素数をカウント<br>";
15 $count=count($book_titles[$y]);
16 print_r($count);
17 print "<hr>";
18 $x[$count][]=$y;
19 print "要素数をキーにした要素をリスト化<br>";
20 print_r($x);
21 print "<hr>";
22 return $x;
23},[]);
24print "集計されたリスト<br>";
25print_r($a);
26print "<hr>";
27krsort($a);
28print "キーの逆順でソート<br>";
29print_r($a);
30print "<hr>";
31print "先頭データを取り出す<br>";
32$b=array_shift($a);
33print_r($b);
34print "<hr>";
35print "結合して表示<br>";
36print_r(implode(",",$b));