是否有PHP Array Group By功能?

Phi*_*ord 4 php arrays group-by

$arr1 = array('a' => '1', 'b' => 'blah', 'c' => 'whatever...',
              'aa' => '2', 'bb' => 'lbha', 'cc' => 'everwhat...', 'dd' => 'bingo',
              'aaa' => '3', 'bbb' => 'halb', 'ccc' => 'revetahw...');
Run Code Online (Sandbox Code Playgroud)

在数组中,我有三个不同的索引长度a,b和c都是1的长度.aa,bb,cc和dd都是2的长度.而aaa,bbb和ccc都是3个长度.

我要做的是找到具有最多元素和最大长度的索引(按长度分组).

所以我会使用aa,bb,cc,dd,因为它们有4个元素,这将返回索引长度2.

我想知道如何获得2?

这是我正在尝试但它不起作用

foreach($arr1 as $key => $data) {
   $index_length_arr[strlen($key)] = $index_length_arr[$key] + 1;
}
Run Code Online (Sandbox Code Playgroud)

结果:

Array
(
    [1] => 1
    [2] => 1
    [3] => 1
)
Run Code Online (Sandbox Code Playgroud)

预期产出:

Array
(
    [1] => 3
    [2] => 4
    [3] => 3
)
Run Code Online (Sandbox Code Playgroud)

然后我可以看到索引(长度为2)具有最多的元素:

'aa' => '2', 'bb' => 'lbha', 'cc' => 'everwhat...', 'dd' => 'bingo',
Run Code Online (Sandbox Code Playgroud)

met*_*din 7

$array = array_count_values(array_map('strlen',array_keys($arr1)));
Run Code Online (Sandbox Code Playgroud)

应该给你想要的东西.

编辑:

您的原始代码很好,除非您必须将= ....更改为 $index_length_arr[strlen($key)]

你使用了两个不同的键.