使用数组键创建新数组

4

鉴于:

$data = array(
    "some"  => "163",
    "rand"  => "630",
    "om"    => "43",
    "words" => "924",
    "as"    => "4",
    "keys"  => "54"
);

我希望创建一个新数组,只包含与某些特定键匹配的键:
$keys = array( "some", "thing", "rand", "keys" );

我想返回一个包含这些共同键的数组,创建如下:
$arr = array(
     "some"   => "163",
     "rand"   => "630",
     "keys"   => "54"
);
3个回答

7
你可以使用 array_intersect_key()array_flip() 实现此功能:
$arr = array_intersect_key($data, array_flip($keys));

结果:

数组
(
    [some] => 163
    [rand] => 630
    [keys] => 54
)
该结果为一个数组,包含三个键值对,分别是“some”、“rand”和“keys”,对应的值分别为163、630和54。

1
$filteredArray = array_intersect_key($data, array_flip($keys)); 

这是最简单的解决方案,

但为了与众不同:

$data = array(
    "some"  => "163",
    "rand"  => "630",
    "om"    => "43",
    "words" => "924",
    "as"    => "4",
    "keys"  => "54"
);

$keys = array( "some", "thing", "rand", "keys" );

$filteredArray = array_filter($data,function($item) use (&$data,$keys) { $retVal = false; if (in_array(key($data),$keys)) $retVal = true; next($data); return $retVal; });

var_dump($filteredArray);

0
$result = array_intersect_key($data, array_flip($keys));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接