php通过具有相同键的逗号值连接
我希望能够通过具有相同键的逗号值进行连接 我有以下代码:php通过具有相同键的逗号值连接,php,Php,我希望能够通过具有相同键的逗号值进行连接 我有以下代码: Array ( [0] => Array ( [user123] => 50877214 ) [1] => Array ( [user123] => 7776057 ) [2] =&
Array
(
[0] => Array
(
[user123] => 50877214
)
[1] => Array
(
[user123] => 7776057
)
[2] => Array
(
[user456] => 53445145
)
[3] => Array
(
[user456] => 19487054
)
)
Array
(
[0] => Array
(
[user123] => "50877214,7776057",
)
[2] => Array
(
[user456] => "53445145,19487054",
)
)
$arr = array_map(null, ...$arr);
$temp = array_map(function ($item) {
return implode(",", $item);
}, $arr);
print_r($temp);die;
Array ( [0] => 50877214,7776057,53445145,19487054 )
我想将其转换为:
Array
(
[0] => Array
(
[user123] => 50877214
)
[1] => Array
(
[user123] => 7776057
)
[2] => Array
(
[user456] => 53445145
)
[3] => Array
(
[user456] => 19487054
)
)
Array
(
[0] => Array
(
[user123] => "50877214,7776057",
)
[2] => Array
(
[user456] => "53445145,19487054",
)
)
$arr = array_map(null, ...$arr);
$temp = array_map(function ($item) {
return implode(",", $item);
}, $arr);
print_r($temp);die;
Array ( [0] => 50877214,7776057,53445145,19487054 )
我的代码:
Array
(
[0] => Array
(
[user123] => 50877214
)
[1] => Array
(
[user123] => 7776057
)
[2] => Array
(
[user456] => 53445145
)
[3] => Array
(
[user456] => 19487054
)
)
Array
(
[0] => Array
(
[user123] => "50877214,7776057",
)
[2] => Array
(
[user456] => "53445145,19487054",
)
)
$arr = array_map(null, ...$arr);
$temp = array_map(function ($item) {
return implode(",", $item);
}, $arr);
print_r($temp);die;
Array ( [0] => 50877214,7776057,53445145,19487054 )
结果:
Array
(
[0] => Array
(
[user123] => 50877214
)
[1] => Array
(
[user123] => 7776057
)
[2] => Array
(
[user456] => 53445145
)
[3] => Array
(
[user456] => 19487054
)
)
Array
(
[0] => Array
(
[user123] => "50877214,7776057",
)
[2] => Array
(
[user456] => "53445145,19487054",
)
)
$arr = array_map(null, ...$arr);
$temp = array_map(function ($item) {
return implode(",", $item);
}, $arr);
print_r($temp);die;
Array ( [0] => 50877214,7776057,53445145,19487054 )
显然,不可能按键分组…首先创建一个值为数组的关联数组。然后,您可以通过创建嵌套数组并使用
内爆()
以逗号连接,将其转换为所需的结果
$assoc = [];
foreach ($array as $nested) {
foreach ($nested as $key => $value) {
if (isset($assoc[$key])) {
$assoc[$key][] = $value;
} else {
$assoc[$key] = [$value];
}
}
}
$result = [];
foreach ($assoc as $key => $value) {
$result[] = [$key => implode(',', $value)];
}
实际上,我建议在第一步就停下来。具有不同键的数组通常很难使用(正如您已经发现的那样)。有点晚了,尽管我认为这仍然有帮助
$data=[
[“user123”=>50877214],
[“user123”=>7776057],
[“user456”=>53445145],
[“user456”=>19487054]
];
$keys=[];
$result=[];
数组\u walk\u递归($data,function($value,$key)使用(&$keys,&$result){
如果(!in_数组($key,$key)){
$keys[]=$key;
$result[array_search($key,$keys)]=[$key=>”;
}
$result[array_search($key,$keys)][$key]。=$value.,”;
});
打印(结果);
/*
排列
(
[0]=>阵列
(
[user123]=>508772147776057,
)
[1] =>阵列
(
[user456]=>5344514519487054,
)
)
*/
补遗
否则,如果您只想将结果作为一个“展平”数组,下面的解决方案就可以做到这一点
$data=[
[“user123”=>50877214],
[“user123”=>7776057],
[“user456”=>53445145],
[“user456”=>19487054]
];
$keys=[];
$result=[];
数组\u walk\u递归($data,function($value,$key)使用(&$keys,&$result){
如果(!in_数组($key,$key)){
$keys[]=$key;
$result[$key]=“”;
}
$result[$key]。=$value.,”;
});
打印(结果);
/*
排列
(
[user123]=>508772147776057,
[user456]=>5344514519487054,
)
*/
这里也可以使用数组\u reduce
:
$res = array_reduce($arr, function ($acc, $el) {
$key = array_key_first($el);
$acc[$key] .= ($acc[$key] ? ',':'') . $el[$key];
return $acc;
}, $acc);
var_export($res);
结果:
array (
'user123' => '50877214,7776057',
'user456' => '53445145,19487054',
)
使用foreach和另一个循环遍历内部数组,以迭代键值对,
$key
,它是用户id(例如user123)。检查$arr
中的$key
是否第一次不存在,因此存储其值,第二次将存在,因此通过分隔符逗号累积其值,
$array=[
[“user123”=>50877214],
[“user123”=>7776057],
[“user456”=>53445145],
[“user456”=>19487054]
];
$arr=[];
foreach($数组作为$inner){
foreach($key=>$value){
如果(数组\键\存在($key,$arr)){
$arr[$key]。=','.$value;
}否则{
$arr[$key]=$value;
}
}
}
回声'
不过,如果您希望对数组进行索引,只需执行另一个变量$res
,循环执行$arr
,并将其键值对存储到$res
$res=[];
foreach($arr作为$key=>$value){
$res[]=[$key=>$value];
}
印刷品(港币);;
输出:
您尝试过的代码在哪里?您还面临哪些问题/错误?@B001ᛦ我刚刚添加了有关我的问题的更多详细信息array\u map
仅适用于值。您是否尝试过一个无聊的旧foreach
?是否每个嵌套数组只有一个键?您可以使用array\u keys($element)[0]
获取该键。为什么要创建多维结果而不是单个关联数组?它工作得非常好,非常感谢♥