$arr1 = array(
1=>array(
'name' => 'a',
'phone'=> '110',
),
2=>array(
'name' => 'b',
'phone'=> '119',
),
3=>array(
'name' => 'a',
'phone'=> '119',
),
4=>array(
'name' => 'b',
'phone'=> '110',
),
);
Run Code Online (Sandbox Code Playgroud)
我花了3个小时搞清楚,并且失败.我想根据名称键值将手机值合并到新阵列.结果是这样的
$arr2 = array(
1=>array(
'name' => 'a',
'phone'=> array(
1=>'110',
2=>'119',
),
),
2=>array(
'name' => 'b',
'phone'=> array(
1=>'110',
2=>'119',
),
)
);
Run Code Online (Sandbox Code Playgroud)
它并不像看起来那么容易.
您需要遍历数组并创建一个新数组.
码
<?php
/** store the results in here **/
$targetArray = [];
/** the data source **/
$sourceArray = [
1 => [
'name' => 'a',
'phone'=> '110',
],
2 => [
'name' => 'b',
'phone'=> '119',
],
3 => [
'name' => 'a',
'phone'=> '119',
],
4 => [
'name' => 'b',
'phone'=> '110',
]
];
foreach($sourceArray as $arr) {
/** create key based off name **/
$targetArray[$arr['name']]['name'] = $arr['name'];
/** add phone numbers as they are found **/
$targetArray[$arr['name']]['phone'][] = $arr['phone'];
}
/** reindex the array **/
$targetArray = array_values($targetArray);
/** see the result **/
var_dump($targetArray);
Run Code Online (Sandbox Code Playgroud)
产量
array(2) {
[0]=>
array(2) {
["name"]=>
string(1) "a"
["phone"]=>
array(2) {
[0]=>
string(3) "110"
[1]=>
string(3) "119"
}
}
[1]=>
array(2) {
["name"]=>
string(1) "b"
["phone"]=>
array(2) {
[0]=>
string(3) "119"
[1]=>
string(3) "110"
}
}
}
Run Code Online (Sandbox Code Playgroud)