2013-04-25 127 views
0

我有此数组:结合阵列相同的元素值,并让他们一起

[0] => Array 
    (
     [userid] => 208 
     [username] => sara 
     [email] => [email protected] 
    ) 

[1] => Array 
    (
     [userid] => 4 
     [username] => jack 
     [email] => [email protected] 
    ) 

[2] => Array 
    (
     [userid] => 303 
     [username] => michael 
     [email] => [email protected] 
    ) 

[3] => Array 
    (
     [userid] => 208 
     [username] => joe 
     [email] => [email protected] 
    ) 

[4] => Array 
    (
     [userid] => 208 
     [username] => david 
     [email] => [email protected] 
    ) 

,我想这样的结果:

[0] => Array 
(
    [userid] => 208 
    [username1] => sara 
    [username2] => joe 
    [username3] => david 
    [email1] => [email protected] 
    [email2] => [email protected] 
    [email3] => [email protected] 
) 

[1] => Array 
(
    [userid] => 4 
    [username1] => jack 
    [email1] => [email protected] 
) 

[2] => Array 
(
    [userid] => 303 
    [username1] => michael 
    [email1] => [email protected] 
) 

我想array_combine,array_merge甚至array_unique有几个foreach加$ n ++;循环没有成功。更精确地说,我成功了,但改变了阵列的整个结构。

回答

1

你可以这样做:

/* $myArray is the array you are trying to change */ 
$result = array(); //Your minimized array 
foreach($myArray as $value){ 
    $userid = $value['userid']; 
    if(isset($result[$userid])) 
     $index = ((count($result[$userid]) - 1)/2) + 1; 
    else 
     $index = 1; 

    $result[$userid]['userid'] = $userid; 
    $result[$userid]['username' . $index] = $value['username']; 
    $result[$userid]['email' . $index] = $value['email'];   
} 
$result = array_values($result); 
+0

最好的实现,虽然$结果[$用户id = $用户ID;应该是$ result [$ userid] [“userid”] = $ userid;和$ index =(count($ result [$ userid]) - 1/2)+ 1;应该是$ index =((count($ result [$ userid]) - 1)/ 2)+ 1;和$ result [$ userid] ['email1'。 $ index] = $ value ['email'];应该是$ result [$ userid] ['email'。 $ index] = $ value ['email']; – 2013-04-25 16:29:07

+0

你是对的。我更新了我的答案。 – 2013-04-25 16:31:12

+0

最后我可以看到一些逻辑。没有阵列合并,结合和独特的需要。只是一个foreach和一个if。谢谢奥马尔和帕特里克。我吸取了教训。 – user1274113 2013-04-26 07:33:04

0

我要环通阵列建立所需的结构:

$result = array(); 
foreach($data as $item) { 
    $result[$item['userid']]['userid'] = $item['userid']; 
    $i = 1; 
    while (true) { 
     if (!isset($result[$item['userid']]['username' . $i])) { 
      $result[$item['userid']]['username' . $i] = $item['username']; 
      $result[$item['userid']]['email' . $i] = $item['email']; 
      break; 
     } 
     $i++; 
    } 
} 
var_dump($result); 
相关问题