PHP:一种简洁的转换数组的方式


PHP: A clean way of converting an array

什么是一个干净的方式来转换数组,看起来像这样:

[584] => Array ( [link_id] => 1   [site_id] => 5     [COUNT(*)] => 2 )
[585] => Array ( [link_id] => 243 [site_id] => 5     [COUNT(*)] => 2 ) 
[586] => Array ( [link_id] => 522 [site_id] => 89223 [COUNT(*)] => 3 )

到一个数组,其中键是上面的site_id,因此对于上面的示例,结果数组将是:

[5] => Array( 1, 2, 243, 2) //Even ones and 0 are link_id, odd ones are count(*)  
[89223] => Array(522, 3)

基本上,按site_id分组。我仍然需要保持link_id和count(*)之间的关系,在上面的情况下,我是通过位置来做的(所以0和1在一起,2和3等),但我也对一个新的结构开放。

谢谢!

你是说这样吗?(演示):

$out = array();
foreach($input as $v)
{
    $site_id = $v['site_id'];
    unset($v['site_id']);
    $out[$site_id][] = $v;
}

或者如果你喜欢值对一个接一个(Demo):

    ...
    unset($v['site_id']);
    $out[$site_id][] = array_shift($v);
    $out[$site_id][] = array_shift($v);
} ...