2014-09-24 69 views
-2
2个阵列

你好所以这是我例如数组:合并基于类似的值

[0] => Array 
( 
    [id] => 10 
    [count] => 10  
) 

[1] => Array 
    ( 
     [id] => 10  
     [count] => 20  
    ) 

[2] => Array 
    (
     [id] => 10 
     [count] => 30  
    ) 

我想通过ID这3个阵列并入1到这种格式: 阵列(ID =>'10 ',count =>('10','20','30')) 我有多个ID,每一个我想返回一个字符串,其格式为“10,20,30等。 “有什么想法吗?

+1

那么你有什么尝试?你在执行某些事情时遇到什么问题?你有没有至少尝试过“蛮力”强制循环的方法? – 2014-09-24 19:37:04

+0

我被困在选择具有相同id值的数组的最开始部分。一旦我选择具有相同ID值的数组,我可以把最后一个数组放在一起... – nodejsj 2014-09-24 19:40:25

回答

0

如果妳穷举使这串它可以做这样的事情:

<?php 
    $source = [ 
     [ 
      'id' => 10, 
      'count' => 1, 
     ], 
     [ 
      'id' => 15, 
      'count' => 2, 
     ], 
     [ 
      'id' => 10, 
      'count' => 3, 
     ], 
     [ 
      'id' => 12, 
      'count' => 4, 
     ], 
     [ 
      'id' => 10, 
      'count' => 5, 
     ], 
    ]; 
    $output = []; 
    foreach($source as $arr) { 
     if (!isset($output[$arr['id']])) $output[$arr['id']] = ''; 
     $output[$arr['id']] .= $arr['count'].','; 
    } 
    var_dump($output); 

这里唯一的一点是最后还有一个额外的,running example

+0

你在那里试着用','op想要一个包含计数值的数组^^ – Dwza 2014-09-24 19:51:01

+0

OP表示他想要一个字符串......'我想要返回一个字符串,其格式为“10,20,30等”..“' – DarkBee 2014-09-24 19:51:53

+0

哦,对不起,我猜这是通过我的观点^^ – Dwza 2014-09-24 19:52:46

0

没有搜索我想尝试一些类似这样的

foreach($source as $s){ 
    $dest[$s['id']]['count'][] = $s['count']; 
} 

在此之后,你可以通过implode(',', $array);

想有更好的方式比这:)

0

这恰好返回被请求的是什么阵列(ID => '10',计数=>( '10','20' , '30'))

foreach($array as $x){ 
$newarray[$x["id"]][]=$x["count"]; 
} 
foreach($newarray as $id=>$count){ 
$c=implode(",",$count); 
$newnewarray[]=array("id"=>$id,"count"=>"($c)"); 
} 
print_r($newnewarray); 
0

下面是代码不尾随,

$result = array(); 

foreach($source as $s){ 
    if(!isset($result[$s['id']])) 
     $result[$s['id']] = $s['count']; 
    else 
     $result[$s['id']] .= ',' . $s['count']; 
} 
var_dump($result);