如果键相同,如何在数组中附加值

时间:2011-05-25 07:28:22

标签: php mysql joomla

我有一个关联数组

[name]->user1,
[class_code]->bsc,
[name]->user2,
[class_code]->msc,
[name]->user1,
[class_code]->mca

现在,我希望结果为

[name]->user1,
[class_code]->bsc,
mca
[name]->user2,
[class_code]->msc

表示如果名称相同,则将class_code附加到第一个。我该怎么办? 我的数组是

 [1] =stdClass Object
        ([class_code] =Maths
            [userid] =365
            [avatar] =default.jpg
            [username] =user2
        )

    [2] =stdClass Object
        (
            [class_code] =Maths
            [userid] = 364
            [avatar] =default.jpg
            [username] =user1
        )

 [3] =stdClass Object
        (
            [class_code] =MCA
            [userid] =364
            [avatar] =default.jpg
            [username] =user1
        )

    [4] =stdClass Object
        (
            [class_code] =MCA
            [userid] =365
            [avatar] =default.jpg
            [username] =user2
        ) 

现在,在显示结果时我想显示ex的记录。 user2 as

username:user2
avatar
classcode :MCA,Maths 

而不是

username:user2
avatar
classcode :MCA
username:user2
avatar
classcode :Maths 

我该怎么做?

4 个答案:

答案 0 :(得分:2)

您不能使用相同的键具有两个值。否则如果你要求$ myarray ['name'],php就不知道该给你什么。

您可以使用嵌套数组。

例如

[0]-> 
  [name]->user1,
  [class_code]->bsc,mca,
[1]->
  [name]->user2,
  [class_code]->msc

或者你可以做这样的事情

[user1]->bsc, mca
[user2]->msc

答案 1 :(得分:0)

如果你想在那里同时拥有两个值,你应该考虑在那里使用一个数组

array(
   "name"=>"user1,
   "class_code"=>"array('mca','bsc'),
   "name"=>"user2,
   "class_code"=>"msc"
);

答案 2 :(得分:0)

如果[class_code]必须包含字符串,您可以尝试

$array[$key] .= $value;

答案 3 :(得分:0)

您可以使整个数组成为多维的:

$users = array(
   0 = array(
       "name"=>"user1",
       "class_code"=>"bsc"
   ),
   1 = array(
       "name"=>"user2",
       "class_code"=>"msc"
   )
);

检索值:

$users[1][name]              // Returns 'user2'
$users[0][class_code]        // Returns 'bsc'

循环使用值:

foreach($users as $user => $attributes) {
    echo "$user: $attributes[name] ($attributes[class_code])<br />";
}

/*
Prints:
    0: user1 (bsc)
    1: user2 (msc)
*/