原始数据
Array
(
[0] => Array
(
[bet_id] => 7
[agent_id] => 2
[bet_type] => 1
[amount] => 0
[name] => ethan
)
[1] => Array
(
[bet_id] => 7
[agent_id] => 2
[bet_type] => 3
[amount] => 0
[name] => ethan
)
[2] => Array
(
[bet_id] => 7
[agent_id] => 4
[bet_type] => 1
[amount] => 2
[name] => alex
)
[3] => Array
(
[bet_id] => 7
[agent_id] => 4
[bet_type] => 4
[amount] => 100
[name] => alex
)
)我被困在逻辑思维中去分离上面的数据。上面的数组将循环所有用户的数据,这里有两个用户。如何将其合并为基于agentId的两个数组。它将如下所示。
Array
(
[0] => Array
(
[agent_id] => 2
[name] => ethan
[1] => 2 //bettype & amount
[3] => 0 //bettype & amount
[bet_id] => 7
)
[1] => Array
(
[agent_id] => 4
[name] => alex
[1] => 0 //bettype & amount
[4] => 100 //bettype & amount
[bet_id] => 7
)
)注释:唯一不同的数据,即agent_id、bet_type和amount。其他数据将是相同的.
发布于 2020-04-25 10:35:43
将bet_type作为键,将amount作为值,会使您的数据结构看起来很糟糕,但让我们将其设置为
$result = [];
foreach($data as $user) {
$found = -1;
for($i = 0; $i<count($result); $i++) {
if($result[$i]["agent_id"] == $user["agent_id"]) {
$found = $i;
break;
}
}
// if not found, create new
if($found == -1) {
$result[] = [
"agent_id" => $user["agent_id"],
"name" => $user["name"],
"bet_id" => $user["bet_id"],
$user["bet_type"] => $user["amount"]
];
} else {
$result[$i][$user["bet_type"]] = $user["amount"];
}
}$data是您的数组,输出如下所示
Array
(
[0] => Array
(
[agent_id] => 2
[name] => ethan
[bet_id] => 7
[1] => 0
[3] => 0
)
[1] => Array
(
[agent_id] => 4
[name] => alex
[bet_id] => 7
[1] => 2
[4] => 100
)
)我建议你改变bet_type的位置,把它们放在像这样的子数组上
$result = [];
foreach($data as $user) {
$found = -1;
for($i = 0; $i<count($result); $i++) {
if($result[$i]["agent_id"] == $user["agent_id"]) {
$found = $i;
break;
}
}
// if not found, create new
if($found == -1) {
$result[] = [
"agent_id" => $user["agent_id"],
"name" => $user["name"],
"bet_id" => $user["bet_id"],
"details" => [
$user["bet_type"] => $user["amount"]
]
];
} else {
$result[$i]["details"][$user["bet_type"]] = $user["amount"];
}
}这将使您的数据更容易查看。
输出将如下所示
(
[0] => Array
(
[agent_id] => 2
[name] => ethan
[bet_id] => 7
[details] => Array
(
[1] => 0
[3] => 0
)
)
[1] => Array
(
[agent_id] => 4
[name] => alex
[bet_id] => 7
[details] => Array
(
[1] => 2
[4] => 100
)
)
)https://stackoverflow.com/questions/61422666
复制相似问题