根据相同的键值连接值

我是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
        )
a617027242 回答:根据相同的键值连接值


$array = [
    [
        'id' => 17,'drug' => 'Clobazam'
    ],[
        'id' => 23,'drug' => 'Dexametasona'
    ],'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);
,

您可以使用此功能来检索期望的输出:

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);

Demo

输出:

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

,
$drugs = [
    [
        'id' => 17,'drug' => 'Clobazam',],'drug' => 'Dexametasona','drug' => 'Diiodohidroxiquinoleína','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
)
本文链接:https://www.f2er.com/2962606.html

大家都在问