我有像
这样的2D数组attendee_programs = [1 =>[100,101],
2 =>[100,101,102]
];
我想获得array_values()
和array_unique()
,但仅限于嵌套元素(抱歉,不确定术语是什么)...... I.E。
programs = [100,101,102];
这是否有php功能?或者我需要手动循环并组装它吗?
编辑:所有答案都非常有用,并向我展示了一些新内容。对不起,我只接受一个。
答案 0 :(得分:2)
您可以使用array_unique,array_reduce和array_merge的巧妙组合来实现此目的:
$a = array_unique(array_reduce($attendee_programs, 'array_merge', []));
这样做可能会在一个数组中结束,并且在indizes中有一些空白 - 如果你需要gaples数组键,你必须在末尾添加array_values
$a = array_values($a);
答案 1 :(得分:1)
您可以使用:
call_user_func_array('array_merge', array_values($attendee_programs));
获取嵌套数组的值。
array_unique(call_user_func_array('array_merge', array_values($attendee_programs)));
获得独特的价值观。
答案 2 :(得分:1)
解决方案:
function flatten($array)
{
$rit = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
return iterator_to_array($rit, true);
}
echo '<pre>';
print_r(flatten($attendee_programs));
结果:
Array
(
[0] => 100
[1] => 101
[2] => 102
)
答案 3 :(得分:1)
又一个选择:
$flat = array();
array_walk_recursive($attendee_programs, function($value) use (&$flat) {
$flat[] = $value;
});
$flat = array_unique($flat);