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

时间:2011-08-09 16:25:59

标签: php arrays

转换如下所示的数组的简洁方法是什么:

[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等)但我也对新结构开放

谢谢!

1 个答案:

答案 0 :(得分:3)

你的意思是这样的? (Demo):

$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);
} ...