我有一个结果数组,如:
Array (
[0] => Array (
["key"] => 5
["product_id"] => 1000)
[1] => Array (
["key"] => 5
["product_id"] => 1001)
[2] => Array (
["key"] => 6
["product_id"] => 1000)
[3] => Array (
["key"] => 6
["product_id"] => 1002)
)
我想将其转换成这样的数组:
Array (
[5] => Array (
[0] => 1000
[1] => 1001)
[6] => Array (
[0] => 1000
[1] => 1002)
)
因此,“键”成为新索引,并且“键”的每个实例都包含与之匹配的产品ID数组。
我可以用foreach做到这一点。但是,如果结果集很大,它可能不是最有效的。
有更快的方法吗?
这是我想要做的事,但也许有更好的方法吗?
$newArray = array();
foreach($results as $row)
{
$rowAttrId = $row["key"];
$rowProdId = $row["prodid"];
if ( !is_array($newArray[$rowAttrId] ) )
{
$newArray[$rowAttrId] = array();
}
array_push($newArray[$rowAttrId], $rowProdId);
} //end foreach db result
答案 0 :(得分:1)
我相信您必须使用loop
,没有其他方法可以解析输入array
。对于更大的数据集,以下是最简单的方法
$r = [];
foreach($a as $v){
$r[$v['key']][] = $v['product_id'];
}