php - 如何根据原始数组中的值将 PHP 多维数组转换为另一个数组?
问题描述
我已经为此花了一周的时间,我试图想出一种方法来访问多维数组中的数据并将其输出到另一个数组,根据数组中的值进行不同的重组。我没有发布一排排损坏的代码,而是简化了我的示例:
这是原始数组:
array(2) {
[0] => array(2) {
["aaa"] => array(2) {
["a19a3234b881ce"] => array(2) {
["pid"] => int(29301)
["vid"] => int(29334)
["idx"] => int(88888)
}
["a7aa94c38aa49caa"] => array(2) {
["pid"] => int(20568)
["vid"] => int(26547)
["idx"] => int(88888)
}
}
["bbb"] => array(2) {
["bsfn"] => string(4) "Apple"
["bsln"] => string(8) "AppleApple"
}
}
[1] => array(2) {
["aaa"] => array(3) {
["abd296a10"] => array(2) {
["pid"] => int(56734)
["vid"] => int(98612)
["idx"] => int(99999)
}
["a31e920fde8"] => array(2) {
["pid"] => int(09800)
["vid"] => int(34521)
["idx"] => int(99999)
}
["a7aa94c38aa49caa"] => array(2) {
["pid"] => int(20568)
["vid"] => int(26547)
["idx"] => int(99999)
}
}
["bbb"] => array(2) {
["bsfn"] => string(4) "Ball"
["bsln"] => string(8) "BallBall"
}
}
}
这是我要输出的内容:
array(2) {
["88888"] => array(3) {
["a19a3234b881ce"] => array(4) {
["pid"] => int(29301)
["vid"] => int(29334)
["idx"] => int(88888)
["arr"] => string(14) "a19a3234b881ce"
}
["a7aa94c38aa49caa"] => array(4) {
["pid"] => int(20568)
["vid"] => int(26547)
["idx"] => int(88888)
["arr"] => string(16) "a7aa94c38aa49caa"
}
["bbb"] => array(2) {
["bsfn"] => string(4) "Apple"
["bsln"] => string(8) "AppleApple"
}
}
["99999"] => array(4) {
["abd296a10"] => array(4) {
["pid"] => int(29301)
["vid"] => int(29334)
["idx"] => int(99999)
["arr"] => string(9) "abd296a10"
}
["a31e920fde8"] => array(4) {
["pid"] => int(20568)
["vid"] => int(26547)
["idx"] => int(99999)
["arr"] => string(11) "a31e920fde8"
}
["a7aa94c38aa49caa"] => array(4) {
["pid"] => int(20568)
["vid"] => int(26547)
["idx"] => int(99999)
["arr"] => string(16) "a7aa94c38aa49caa"
}
["bbb"] => array(2) {
["bsfn"] => string(4) "Ball"
["bsln"] => string(8) "BallBall"
}
}
}
解决方案
试试这个例子:
$result = [];
foreach($data as $item) {
if (!empty($item['aaa']) && is_array($item['aaa'])) {
$key = array_values($item['aaa'])[0]['idx'] ?? null;
if ($key) {
$result[$key] = array_merge($item['aaa'], ['bbb' => $item['bbb'] ?? []]);
}
}
}
// Test result:
print_r($result);
推荐阅读
- typescript - 将 KeysOfType 与泛型一起使用
- c++ - 包含std :: list的结构的c ++初始化
- html - HTML 表格项在表格外渲染
- sql - 使用 Oracle SQL,我怎样才能使用他们的排名(1-7)来获得工作日(周一至周日)?
- python - Pandas:图中的分组和 xticks
- c - 以毫米为单位计算距离的坐标
- knockout.js - 初始化 jQuery 文件上传后,如何将淘汰赛 js 绑定重新应用到文件输入元素?
- mongodb - 将 parse-server / mlab 部署迁移到 MongoDB Atlas
- git - GitHub 在推送到新创建的存储库时出现问题
- sql - Sqlite 中的自定义聚合函数