使用数组键创建新阵列


Using Array Keys to create a New Array

给定:

$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"
);
您可以使用

array_intersect_key()array_flip()执行此操作:

$arr = array_intersect_key($data, array_flip($keys));

结果:

数组(    [一些] => 163    [兰特] => 630    [键] => 54)
$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);
$result = array_intersect_key($data, array_flip($keys));