将mysql结果数组转换为另一个没有循环的数组

时间:2019-06-27 08:34:27

标签: php arrays

我有一个结果数组,如:

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

1 个答案:

答案 0 :(得分:1)

我相信您必须使用loop,没有其他方法可以解析输入array。对于更大的数据集,以下是最简单的方法

$r = [];
foreach($a as $v){
 $r[$v['key']][] = $v['product_id'];
}