如何改造这个阵列?

Mir*_*age 9 php arrays

这是数据

$array = array(
    'random' => 1,
    'pewpew' => 2,
    'temp' => 5,
    'xoxo' => 3,
    'qweqweqe' => 4,
);

$fields = array('random', 'xoxo', 'temp');
Run Code Online (Sandbox Code Playgroud)

我需要得到结果:

$result = array(
    'random' => 1,
    'xoxo' => 3,
    'temp' => 5,
);
Run Code Online (Sandbox Code Playgroud)

我的意思是来自$ fields的密钥存在/订单适用于$ array.

问题是:我是否可以仅使用array_函数执行此转换?(我不想使用迭代)如果是:你可以链接我需要的功能吗?

(对不起拼写错误)

UPD.

PHP 5.2

Way*_*ood 5

$result=array_intersect_key($array ,array_flip($fields) );
Run Code Online (Sandbox Code Playgroud)

  • 它没有正确排序(基于$ fields顺序,而不是$ array顺序); (2认同)

jor*_*are 1

此代码保留顺序并根据需要在 PHP 5.2 中工作

一条线:

$result = array_merge( array_flip($fields),
                       array_intersect_key(
                                          $array,
                                          array_flip( $fields )
                                          )
                       );
Run Code Online (Sandbox Code Playgroud)

对于性能:

$flip = array_flip($fields);
$result = array_merge( $flip
                       array_intersect_key(
                                          $array,
                                          $flip
                                          )
                       );
Run Code Online (Sandbox Code Playgroud)