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