0

从这样的事情开始:

大批 (
  0 =>
  大批 (
    'co' => '1',
    'lo' => 'aaa',
  ),
  1 =>
  大批 (
    'co' => '1',
    'lo' => 'bbb',
  ),
  2 =>
  大批 (
    'co' => '1',
    'lo' => 'ccc',
  ),
  3 =>
  大批 (
    'co' => '1',
    'lo' => 'aaa',
  ),
  4 =>
  大批 (
    'co' => '1',
    'lo' => 'bbb',
  )
)

然后用索引'lo'对数组元素进行分组,计算伴随它们的'co'的值,最终得到类似于:

大批 (
  aaa => 2,
  bbb => 2,
  cc => 1
)
4

3 回答 3

1

我同意其他人关于显示您迄今为止尝试过的代码的观点。话虽如此,这应该有效:

$array = array (
  array (
    'co' => '1',
    'lo' => 'aaa',
  ),
  array (
    'co' => '1',
    'lo' => 'bbb',
  ),
  array (
    'co' => '1',
    'lo' => 'ccc',
  ),
  array (
    'co' => '1',
    'lo' => 'aaa',
  ),
  array (
    'co' => '1',
    'lo' => 'bbb',
  )
);

$new_array = array();

foreach($array as $a){
  if(!array_key_exists($a['lo'], $new_array)){
    $new_array[$a['lo']] = intval($a['co']);
  }else{
    $new_array[$a['lo']] = $new_array[$a['lo']] + intval($a['co']);
  }
}

print_r($new_array);

'co'我们在数组中循环,如果不存在则创建一个新的数组键,如果它已经存在,则使用指定的数字添加到数组键值中。在尝试将它们解析/添加到新数组之前,您可能需要一些额外的检查以确保它们作为数组键存在于原始数组'co'中。'lo'

作为旁注,无需将原始数组的键指定为数字,因为数组是自动索引的。请注意,我在声明数组时删除了这些数字。

于 2013-09-29T20:02:22.357 回答
0

像这样 ?

$dataArray = array (
    0 =>
    array (
        'co' => '1',
        'lo' => 'aaa',
    ),
    1 =>
    array (
        'co' => '1',
        'lo' => 'bbb',
    ),
    2 =>
    array (
        'co' => '1',
        'lo' => 'ccc',
    ),
    3 =>
    array (
        'co' => '1',
        'lo' => 'aaa',
    ),
    4 =>
    array (
        'co' => '1',
        'lo' => 'bbb',
    )
);

$finalResults = array();

foreach($dataArray as $data){
    if(isset($finalResults[$data['lo']])){
        $finalResults[$data['lo']]++;
    }else{
        $finalResults[$data['lo']] = 1;
    }
}


print_r($finalResults);
于 2013-09-29T19:59:10.783 回答
0

给你 ;-)

$in=array (
  0 => 
  array (
    'co' => '1',
    'lo' => 'aaa',
  ),
  1 => 
  array (
    'co' => '1',
    'lo' => 'bbb',
  ),
  2 => 
  array (
    'co' => '1',
    'lo' => 'ccc',
  ),
  3 => 
  array (
    'co' => '1',
    'lo' => 'aaa',
  ),
  4 => 
  array (
    'co' => '1',
    'lo' => 'bbb',
  )
);

$out= array();

for($i=0;$i<count($in);$i++)
{
    $out[$in[$i]['lo']]=0;
}

for($i=0;$i<count($in);$i++)
{
    $out[$in[$i]['lo']]+=$in[$i]['co'];
}

print_r($out);
于 2013-09-29T20:01:27.357 回答