繁体   English   中英

按子数组值分组php数组

[英]group php array by subarray value

我想按子数组的值对数组进行分组。 如果我有这样的数组:

Array
(
    [0] => Array
        (
            [userID] => 591407753
            [propertyA] => 'text1'
            [propertyB] => 205
        )

    [1] => Array
        (
            [userID] => 989201004
            [propertyA] =>'text2'
            [propertyB] => 1407
        )

    [2] => Array
        (
            [userID] => 989201004
            [propertyA] => 'text3'
            [propertyB] => 1407
        )
)

我想按子数组的值对该数组进行分组,以便可以有一个这样的数组:

Array
(
    [0]=>Array
         (
          [userID]=>59140775
          [properties]=>Array
                        (
                         [0]=>text1
                        )
          [propertyB]=>205
         )
    [1]=>Array
        (
         [userID]=>989201004
         [properties]=>Array
                          (
                           [0]=>'text2'
                           [1]=>'text3'
                          )
         [propertyB]=>1047
        )   
)

我该怎么做?

在尝试之前:

   $result = array();
        foreach ($userArray as $record)
        {
            $id=$record['userID'];
            if(isset($result[$id]))
            {
                $result[$id]['propertyA'][]=array($record['propertyA']);
            }
            else {
                  $record["propertyA"]=array($record['propertyA']);
                  unset($record['tweet']);
                  $result[$id]=$record;
                }
        }

问题出在propertyA 我得到的是带有表的附加属性propertyA ,如下所示:

Array
(
    [0]=>Array (
        [userID]=>989201004
        [propertyA]=>'text2'
        [properties]=>Array(
            [0]=>'text2'
            [1]=>'text3'
        )
    )
)

以下代码可以完成这项工作。 我希望这是不言而喻的:

$result = array();
foreach ($array as $record) {
    if (!isset($result[$record['userID']])) {
        $result[$record['userID']] = array(
            'userID' => $record['userID'],
            'properties' => array($record['propertyA']),
            'propertyB' => $record['propertyB'],
        );
    }
    else {
        $result[$record['userID']]['properties'][] = $record['propertyA'];
    }
}
$result = array_values($result);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM