我有以下两个数组:
$array_one = array('colorZero'=>'black', 'colorOne'=>'red', 'colorTwo'=>'green', 'colorThree'=>'blue', 'colorFour'=>'purple', 'colorFive'=>'golden');
$array_two = array('colorOne', 'colorTwo', 'colorThree');
我想要一个来自 $array_one
的数组,它只包含其键是 $array_two 成员的键值对(通过创建一个新数组或删除其余的$array_one
)
我该怎么做?
我查看了 array_diff
和 array_intersect
,但它们将值与值进行比较,而不是将一个数组的值与另一个数组的键进行比较。
最佳答案
从 PHP 5.1 开始,有 array_intersect_key
( manual )。
只需使用 array_flip()
将第二个数组从 key=>value 翻转到 value=>key,然后比较键。
因此,为了比较 OP 的数组,可以这样做:
$result = array_intersect_key( $array_one , array_flip( $array_two ) );
根本不需要任何循环数组。
关于PHP:如何将一个数组中的键与另一个数组中的值进行比较,并返回匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25472252/