仅返回其键位于另一个数组中的数组值

时间:2013-03-20 11:11:47

标签: php arrays

我有两个看起来像这样的数组:

$fields = array('id', 'name', 'city', 'birthday', 'money');

$values = array('id' => 10,    
    'name' => 'Jonnas',   
    'anotherField' => 'test',
    'field2' => 'aaa',
    'city' => 'Marau', 
    'field3' => 'bbb',
    'birthday' => '0000-00-00',
    'money' => 10.95
);

是否有PHP内置函数检索仅使用$fields数组(id, name, city, birthday, money)上指定的键填充的数组?

我期望的回报是:

$values2 = array(
    'id' => 10,
    'name' => 'Jonnas',
    'city' => 'Marau',
    'birthday' => '0000-00-00',
    'money' => 10.95
);

P.S。:我正在寻找内置功能。<​​/ p>

2 个答案:

答案 0 :(得分:13)

$values2 = array_intersect_key($values, array_flip($fields));

如果必须始终按$fields的顺序返回密钥,请使用简单的foreach循环:

$values2 = array();
foreach ($fields as $field) {
    $values2[$field] = $values[$field];
}

答案 1 :(得分:2)

array_intersect_key — Computes the intersection of arrays using keys for comparison

<?php
$fields = array('id', 'name', 'city', 'birthday');

$values = array('id' => 10,    
    'name' => 'Jonnas',   
    'anotherField' => 'test',
    'field2' => 'aaa',
    'city' => 'Marau', 
    'field3' => 'bbb',
    'birthday' => '0000-00-00'
);

var_dump(array_intersect_key($fields, array_flip($values)));
?>
相关问题