我有两个看起来像这样的数组:
$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>
答案 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)));
?>