我是PHP的新手,我想根据void read(QString fName)
{
QFile file(fName);
if (!file.open(QFile::ReadOnly | QFile::Text))
{
std::cout << "Could not open the file for reading" << std::endl;
return;
}
QTextStream in(&file);
QString text = in.readAll();
std::cout << text << std::endl;
file.close();
}
键将值与相同的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
)
答案 0 :(得分:2)
$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);
答案 1 :(得分:0)
您可以使用此功能来检索期望的输出:
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的信息。附加值通过串联完成。有关array_key_exists
的工作方式的信息,您可以阅读here。
答案 2 :(得分:0)
$drugs = [
[
'id' => 17,
'drug' => 'Clobazam',
],
[
'id' => 23,
'drug' => 'Dexametasona',
],
[
'id' => 23,
'drug' => 'Diiodohidroxiquinoleína',
],
[
'id' => 25,
'drug' => 'Diclofenac,dietilamina',
],
];
$combinedDurgs = [];
foreach ($drugs as &$drug) {
$combinedDurgs['drugs'][$drug['id']][] = $drug['drug'];
}
$expectedOutput = [];
foreach ($combinedDurgs['drugs'] as $drugId => $drug) {
$expectedOutput[$drugId] = implode(',', $drug);
}
输出将
Array
(
[17] => Clobazam
[23] => Dexametasona,Diiodohidroxiquinoleína
[25] => Diclofenac,dietilamina
)