PHP从2D数组中获取array_values

时间:2015-11-16 18:26:05

标签: php arrays

我有像

这样的2D数组
attendee_programs = [1 =>[100,101],
                     2 =>[100,101,102]
                    ];

我想获得array_values()array_unique(),但仅限于嵌套元素(抱歉,不确定术语是什么)...... I.E。

programs = [100,101,102];

这是否有php功能?或者我需要手动循环并组装它吗?

编辑:所有答案都非常有用,并向我展示了一些新内容。对不起,我只接受一个。

4 个答案:

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