相交一维和二维数组

Intersect One and Two-Dimensional Arrays

我有一个数组,其中有分配给键的标签和一个包含这些键的数组。我需要通过一维值和多维键将这两个数组相交。是否有一个 php 函数允许这样做?我通读了 php 数组函数,但找不到合适的东西。

$labels = array( 
    '7d' => __( 'Wöchentlich', 'aboprodukt' ),
    '14d' => __( 'Alle zwei Wochen', 'aboprodukt' ),
    '1m' => __( 'Monatlich', 'aboprodukt' ),
    '2m' => __( 'Alle zwei Monate', 'aboprodukt' ) );

$get_options = array( '7d','14d','1m');

这应该导致:

$result = array(
    '7d' => __( 'Wöchentlich', 'aboprodukt' ),
    '14d' => __( 'Alle zwei Wochen', 'aboprodukt' ),
    '1m' => __( 'Monatlich', 'aboprodukt' ) );

(没有“2m”键->值对)

像这样:

$result = array_filter($labels, 
    function($k) use($get_options) {
        return in_array($k, $get_options);
    },
    ARRAY_FILTER_USE_KEY
);

但你也可以这样做:

array_intersect_key($labels, array_flip($get_options));

array_filter 与第三个参数 ARRAY_FILTER_USE_KEY 结合使用以仅过滤键。

array_filter($labels, 
    fn($label)=>in_array($label, $get_options),
    ARRAY_FILTER_USE_KEY);