php - 按分解的键字符串对数组进行分组

标签 php arrays input grouping explode

在分解键后,我尝试从一个简单数组中获取一个多维数组。 我的数组是多个输入的结果,其中名称是根据 md5 哈希值和输入的实际名称动态生成的。 我需要使用 md5 字符串作为键并对相对值进行分组。

$old_array = [
   'ec0e2603172c73a8b644bb9456c1ff6e-name' => 'Bruce',
   'ec0e2603172c73a8b644bb9456c1ff6e-surname' => 'Wayne',
   'ec0e2603172c73a8b644bb9456c1ff6e-city' => 'Gotham',

   '84d961568a65073a3bcf0eb216b2a576-name' => 'Clark',
   '84d961568a65073a3bcf0eb216b2a576-surname' => 'Kent',
   '84d961568a65073a3bcf0eb216b2a576-city' => 'Metropolis',
   //etc
];

这就是我想要得到的:

$new_array = [
    'ec0e2603172c73a8b644bb9456c1ff6e' => [
            'name' => 'Bruce',
            'surname' => 'Wayne',
            'city' => 'Gotham'
     ],
    '84d961568a65073a3bcf0eb216b2a576' => [
            'name' => 'Clark',
            'surname' => 'Kent',
            'city' => 'Metropolis'
     ] 
];

最佳答案

Working demo

只需将数组键按 - 分解并使用该数组键分区值存储在新数组中即可。

$array = [
   'ec0e2603172c73a8b644bb9456c1ff6e-name' => 'Bruce',
   'ec0e2603172c73a8b644bb9456c1ff6e-surname' => 'Wayne',
   'ec0e2603172c73a8b644bb9456c1ff6e-city' => 'Gotham',

   '84d961568a65073a3bcf0eb216b2a576-name' => 'Clark',
   '84d961568a65073a3bcf0eb216b2a576-surname' => 'Kent',
   '84d961568a65073a3bcf0eb216b2a576-city' => 'Metropolis',
   //etc
];

$out = array();
foreach($array as $key => $val){
    $tmp = explode("-", $key);  
    $out[$tmp[0]][$tmp[1]] = $val;
}

echo '<pre>';
print_r($out);

关于php - 按分解的键字符串对数组进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37342800/

相关文章:

javascript - jQuery Sortable 只有一个列表如果取消仍然更新

java - 在java中将原始类型数组转换为对象数组

php - 如何在Mysql中检查数组中的列

excel - excel多输入框VBA

javascript - 使用浏览按钮将文件附加到 Mandrill 消息

php - 过滤系统不工作

javascript - 如何将php变量传递给jquery

javascript - 如何重定向到选择相同选项的不同页面?

arrays - typescript :为每个元素输入不同类型的数组

java - java中的输入检查方法