5

次のような2つの配列があります。

$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
);

$fieldsarrayで指定されたキーのみで満たされた配列を取得する PHP 組み込み関数はあります(id, name, city, birthday, money)か?

私が期待するリターンは次のとおりです。

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

PS: 組み込み関数のみを探しています。

4

2 に答える 2

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

キーが常に の順序で返される必要がある場合は、代わりに$fields単純なforeachループを使用します。

$values2 = array();
foreach ($fields as $field) {
    $values2[$field] = $values[$field];
}
于 2013-03-20T11:14:06.900 に答える
2

array_intersect_key — 比較のためにキーを使用して配列の交点を計算します

<?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)));
?>
于 2013-03-20T11:20:28.367 に答える