我有一个如下所示的数组:
$myArray =
[
['email' => '[email protected]', 'value' => '123'],
['email' => '[email protected]', 'value' => '456'],
['email' => '[email protected]', 'value' => '789'],
['email' => '[email protected]', 'value' => '123'],
['email' => '[email protected]', 'value' => '456'],
...
]
根据唯一列值(电子邮件)组合值的好方法是什么,以使之前的数组最终像这样:
[
'[email protected]' => ['123', '456'],
'[email protected]' => ['123', '456', '789'],
...
]
我可以想到解决方案,但它们看起来效率都很低:(以下是一个例子:
$resultArray = array();
foreach ($myArray as $info) {
if (!isset($resultArray[$info['email']])) {
$resultArray[$info['email']] = array();
}
array_push($resultArray[$info['email']], $info['value']);
}
出于某种原因,这不适合我。
问题
有更好的解决方案吗?
-- 更新了我的明显错误 - 检查新的(第一个)数组:/ --
您可以简单地使用
foreach
作为
$myArray =
[
['email' => '[email protected]', 'value' => '123'],
['email' => '[email protected]', 'value' => '456'],
['email' => '[email protected]', 'value' => '789'],
['email' => '[email protected]', 'value' => '123'],
['email' => '[email protected]', 'value' => '456'],
];
$result = array();
foreach ($myArray as $key => &$value) {
if(isset($result[$value['email']])){
array_push($result[$value['email']],$value['value']);
}else{
$result[$value['email']] = array($value['value']);
}
}