相交一维和二维数组
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);
我有一个数组,其中有分配给键的标签和一个包含这些键的数组。我需要通过一维值和多维键将这两个数组相交。是否有一个 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);