从PHP中的键列表创建新数组

bra*_*adt 5 php arrays

我想要一种快速简单的方法来复制数组,但能够指定我想要复制的数组中的哪些键.

我可以轻松地为此编写一个函数,但我想知道是否有PHP函数已经执行此操作.类似array_from_keys()下面的功能.

$sizes = array('small' => '10px', 'medium' => '12px', 'large' => '13px');

$chosen = array_from_keys($sizes, 'small', 'large');

// $chosen = array('small' => '10px', 'large' => '13px');
Run Code Online (Sandbox Code Playgroud)

Chr*_*blé 9

在PHP中有一个本机函数允许这样的操作,即   array_intersect_key,你必须稍微修改你的语法.

 <?php
      $sizes = array('small' => '10px', 'medium' => '12px', 'large' => '13px');
      $selected = array_fill_keys(array('small', 'large'), null); 
      $result = array_intersect_key($sizes, $selected);
 ?>
Run Code Online (Sandbox Code Playgroud)

$ result将包含:

    Array (
        [small] => 10px
        [large] => 13px
    );
Run Code Online (Sandbox Code Playgroud)


Tom*_*igh 5

据我所知,没有为此功能。我认为最简单的方法是执行以下操作:

$chosen = array_intersect_key($sizes, array_flip(array('small', 'large')));  
Run Code Online (Sandbox Code Playgroud)

或者如您所说,您可以轻松编写一个函数:

function array_from_keys() {
    $params = func_get_args();
    $array = array_shift($params);
    return array_intersect_key($array, array_flip($params));
}

$chosen = array_from_keys($sizes, 'small', 'large');
Run Code Online (Sandbox Code Playgroud)


Jer*_*y L 1

简单的方法:

$sizes = array('small' => '10px', 'medium' => '12px', 'large' => '13px');
$chosen = array("small", "large");
$new = array();

foreach ($chosen as $key)
  $new[$key] = $sizes[$key];
Run Code Online (Sandbox Code Playgroud)