根据相同的键值连接值
Concatenate values according to the same key value
我是 PHP 中的一些新手,我想根据 drug
键与相同的 id
.
连接值
我的阵列:
Array
(
[0] => Array
(
[id] => 17
[drug] => Clobazam
)
[1] => Array
(
[id] => 23
[drug] => Dexametasona
)
[2] => Array
(
[id] => 23
[drug] => Diiodohidroxiquinoleína
)
[3] => Array
(
[id] => 25
[drug] => Diclofenac,dietilamina
)
预期输出:
Array
(
[0] => Array
(
[id] => 17
[drug] => Clobazam
)
[1] => Array
(
[id] => 23
[drug] => Dexametasona, Diiodohidroxiquinoleína
)
[2] => Array
(
[id] => 25
[drug] => Diclofenac,dietilamina
)
您可以使用此函数来检索您的预期输出:
function collect_same_id(&$data){
$tmp = [];
$i = 0;
foreach($data as $ind=>$rec){
if(!array_key_exists($rec['id'],$tmp)){
$tmp[$rec['id']] = $i;
$i++;
} else {
$data[$tmp[$rec['id']]]['drug'] .= ', '.$rec['drug'];
unset($data[$ind]);
}
}
sort($data);
}
collect_same_id($data);
print_r($data);
输出:
Array
(
[0] => Array
(
[id] => 17
[drug] => Clobazam
)
[1] => Array
(
[id] => 23
[drug] => Dexametasona, Diiodohidroxiquinoleína
)
[2] => Array
(
[id] => 25
[drug] => Diclofenac,dietilamina
)
)
在这里&
改变你原来的数组,你可以阅读references here. Appending values done with concatenation. Information about how does array_key_exists
works you can read here。
$array = [
[
'id' => 17,
'drug' => 'Clobazam'
],
[
'id' => 23,
'drug' => 'Dexametasona'
],
[
'id' => 23,
'drug' => 'Diiodohidroxiquinoleína'
],
[
'id' => 25,
'drug' => 'Clobazam'
]
];
$result = [];
foreach ($array as $item) {
$id = $item['id'];
$drug = $item['drug'];
if (isset($result[$id])) {
$result[$id]['drug'] .= ', ' . $drug;
} else {
$result[$id] = $item;
}
}
$result = array_values($result);
var_dump($result);
我是 PHP 中的一些新手,我想根据 drug
键与相同的 id
.
我的阵列:
Array
(
[0] => Array
(
[id] => 17
[drug] => Clobazam
)
[1] => Array
(
[id] => 23
[drug] => Dexametasona
)
[2] => Array
(
[id] => 23
[drug] => Diiodohidroxiquinoleína
)
[3] => Array
(
[id] => 25
[drug] => Diclofenac,dietilamina
)
预期输出:
Array
(
[0] => Array
(
[id] => 17
[drug] => Clobazam
)
[1] => Array
(
[id] => 23
[drug] => Dexametasona, Diiodohidroxiquinoleína
)
[2] => Array
(
[id] => 25
[drug] => Diclofenac,dietilamina
)
您可以使用此函数来检索您的预期输出:
function collect_same_id(&$data){
$tmp = [];
$i = 0;
foreach($data as $ind=>$rec){
if(!array_key_exists($rec['id'],$tmp)){
$tmp[$rec['id']] = $i;
$i++;
} else {
$data[$tmp[$rec['id']]]['drug'] .= ', '.$rec['drug'];
unset($data[$ind]);
}
}
sort($data);
}
collect_same_id($data);
print_r($data);
输出:
Array
(
[0] => Array
(
[id] => 17
[drug] => Clobazam
)
[1] => Array
(
[id] => 23
[drug] => Dexametasona, Diiodohidroxiquinoleína
)
[2] => Array
(
[id] => 25
[drug] => Diclofenac,dietilamina
)
)
在这里&
改变你原来的数组,你可以阅读references here. Appending values done with concatenation. Information about how does array_key_exists
works you can read here。
$array = [
[
'id' => 17,
'drug' => 'Clobazam'
],
[
'id' => 23,
'drug' => 'Dexametasona'
],
[
'id' => 23,
'drug' => 'Diiodohidroxiquinoleína'
],
[
'id' => 25,
'drug' => 'Clobazam'
]
];
$result = [];
foreach ($array as $item) {
$id = $item['id'];
$drug = $item['drug'];
if (isset($result[$id])) {
$result[$id]['drug'] .= ', ' . $drug;
} else {
$result[$id] = $item;
}
}
$result = array_values($result);
var_dump($result);