Php 如果数组的元素与

Php 如果数组的元素与,php,arrays,Php,Arrays,如果像xyz value这样的元素具有相同的值mark或admon,如何在数组中打断数组。我想要一个数组,该数组只有abc值 使元素数组具有相同的值 Array ( [0] => stdClass Object ( [abc] => 1586 [xyz] => mark ) [1] => stdClass

如果像xyz value这样的元素具有相同的值mark或admon,如何在数组中打断数组。我想要一个数组,该数组只有abc值

使元素数组具有相同的值

    Array
        (
        [0] => stdClass Object
            (
                [abc] => 1586
                [xyz] => mark
            )

        [1] => stdClass Object
            (
                [abc] => 123456
                [xyz] => mark
            )

        [2] => stdClass Object
            (
                [abc] => 235689
                [xyz] => Admon
            )

        [3] => stdClass Object
            (
                [abc] => 12564
                [xyz] => Admon
            )

        )
结果数组应该如下所示

Array
        (
        [0] => (
                [abc] => 1586,123456
                [xyz] = mark
            )

        [1] => (
                [abc] => 235689,12564
                [xyz] => admon
            )

        )

筛选原始数组以匹配mark或admon等条件

$new = [];
$unik = array_unique(array_column((array)$original, 'xyz'));

$new = array_map(function($a) use ($original){
  $c = array_filter($original, function($f){ return $a == $f['xyz'] });
  $k = array_column($c, 'abc')
  return implode(',', $k);
}, $unik);

无法将stdClass类型的对象用作array@user1252087只需将其转换为数组,将
(数组)
放在原始数组前面。与
(array)$original
类似,这并不能提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论-
$temp = array();
foreach ($array as $obj) {
    $temp[$obj->xyz][] = $obj->abc;
}
$result = array();
foreach ($temp as $arr => $value) {
    $result[] = array('abc' => implode(',', $value), 'xyz' => $arr);
}
print_r($result);