Php 按列值对数据行进行分组,并重新构造为关联多维数组
我正在尝试将索引数组更改为新的数组结构。我的数据如下:Php 按列值对数据行进行分组,并重新构造为关联多维数组,php,arrays,multidimensional-array,grouping,associative-array,Php,Arrays,Multidimensional Array,Grouping,Associative Array,我正在尝试将索引数组更改为新的数组结构。我的数据如下: $arr = array( array( "year" => 1921, "name" => "bob" ), array( "year" => 1944, "name" => "steve" ), array( "year" => 1944
$arr = array(
array( "year" => 1921, "name" => "bob" ),
array( "year" => 1944, "name" => "steve" ),
array( "year" => 1944, "name" => "doug" ),
array( "year" => 1921, "name" => "jim" ),
);
我想重新创建一个新阵列,将它们分组到同一年。我能想到的最好办法是将年份指定为键,这样任何具有该年份的行都会添加到该键中,但我要寻找的不是输出。我需要的是它如何列在下面
"data": [
{
"year":"1921",
"names": [
{ "name":"bob" }, { "name":"jim"}
]
},
{
"year":1944",
"names": [
{ "name":"steve" }, { "name":"doug "}
]
}
您不需要预先提取唯一年份,也不需要在嵌套循环中使用条件。只需使用临时第一级键将数据推入结果集中,然后在完成循环时删除临时键 这确保了年份的唯一性,但允许重复名称 代码:() 输出:
{
"data": [
{
"year": 1921,
"names": [
{
"name": "bob"
},
{
"name": "jim"
}
]
},
{
"year": 1944,
"names": [
{
"name": "steve"
},
{
"name": "doug"
}
]
}
]
}
你是对的,虽然另一种方法把我带到了正确的方向,我能够让它工作,但在我看来,这是一个更好的解决方案。很抱歉,这个问题似乎是一个“需求转储”。请始终发布您的最佳自我解决失败尝试,以便社区了解您没有犯下“帮助吸血鬼”的错误。通过显示错误代码,我们通常可以避免从头开始编写完整的脚本,而只需找出代码中出错的部分。(添加您辛苦工作的证明也有助于防止downV的出现)如果您确实编写了一些代码,那么将其添加到您的问题中作为一个例子永远不会太迟。@wuzz当您删除它时,我正在开发一个完整的示例来回答。“你能不能取消删除它,这样我就可以分享我的答案了?”比尔·卡温取消删除
{
"data": [
{
"year": 1921,
"names": [
{
"name": "bob"
},
{
"name": "jim"
}
]
},
{
"year": 1944,
"names": [
{
"name": "steve"
},
{
"name": "doug"
}
]
}
]
}