Php 使用阵列生成单个阵列

Php 使用阵列生成单个阵列,php,arrays,Php,Arrays,我有一个数组,在任何给定的点上都可以有许多值,我想要完成的是将所有数组索引合并,并用我的最终值形成一个索引。合并相同的其他值 假设我有下面的数组结果 Array ( [0] => stdClass Object ( [component] => sodium chloride [generic_results] => Average:=99.20% ) [1] => stdC

我有一个数组,在任何给定的点上都可以有许多值,我想要完成的是将所有数组索引合并,并用我的最终值形成一个索引。合并相同的其他值

假设我有下面的数组结果

Array
(
    [0] => stdClass Object
        (
            [component] => sodium chloride
            [generic_results] => Average:=99.20%
        )

    [1] => stdClass Object
        (
            [component] => sodium chloride
            [generic_results] => RSD:=0.54%
        )

    [2] => stdClass Object
        (
            [component] => sodium chloride
            [generic_results] => n:=3
        )

)
我想要的是这样的东西

Array
(
    [0] => stdClass Object
        (
            [component] => sodium chloride
            [generic_results] => Average:=99.20%,RSD:=0.54%, n:=3
        )
)
我尝试了阵列唯一性,但它不工作

生成结果的示例代码:

   $arr=array(
            (object) array(
                'component'=>'sodium chloride',
                 'generic_results'=>'Average:=99'
            ),
            (object) array(
                'component'=>'sodium chloride',
                 'generic_results'=>'RSD:=0.54'
            ),
            (object) array(
                'component'=>'sodium chloride',
                 'generic_results'=>'n:=3'
            )
        );      

        print('<pre>');
        print_r($arr); 
        print('</pre>');
$arr=array(
(对象)数组(
“成分”=>“氯化钠”,
“一般结果”=>“平均值:=99”
),
(对象)数组(
“成分”=>“氯化钠”,
“一般结果”=>“RSD:=0.54”
),
(对象)数组(
“成分”=>“氯化钠”,
“通用结果”=>“n:=3”
)
);      
打印(“”);
印刷费($arr);
打印(“”);
对这个问题有什么建议吗?

试试这个

$result = array_reduce($arr, function($result, $item) {
    if ($result === null) {

        // initialize with first item
        return [$item];
    }

    // add generic_results of current item to result
    $result[0]->generic_results .= ',' . $item->generic_results;
    return $result;
    }
);
这将返回一个数组,但您可以(尽管它并不总是足够)然后使用json_decode(json_encode($new2),false)将其转换为对象。希望对您有所帮助。

您可以使用,它迭代数组,将所有元素与给定的回调函数组合在一起:


演示:

唯一不起作用,因为每条记录都是唯一的,只有部分记录是相同的。你必须循环你的数组,记住你所看到的“组件”条目,使用一个临时数组和一个函数,如_array(),始终具有两个属性
[component]
[generic\u results]
,即使此数组的大小可能不同?2)
[generic\u results]
是唯一变化的字段吗?3) 如果(2)为否,则每次
[component]
匹配时,您需要的是串联
[generic\u results]
?是的,无论发生什么情况,始终会有两个属性,并且只有generic result始终变为这是什么。另一件事是,我希望组件能够独立运行,即使它被用作keySorry,我也不了解,这正是我想要的。另一件事我希望组件本身,即使它被用作键,也是组件,类似于[component]=>氯化钠,然后[NaCl]=>……诸如此类的东西请看我更新的答案-我相信这就是你想要的?你的答案给了我很多感谢,它很有效,如果我说的是相同的数组,我怎么能做同样的工作,但是现在,组件变量取决于期望的输出是什么
$result = array_reduce($arr, function($result, $item) {
    if ($result === null) {

        // initialize with first item
        return [$item];
    }

    // add generic_results of current item to result
    $result[0]->generic_results .= ',' . $item->generic_results;
    return $result;
    }
);