也许我快疯了,但我可以发誓说有一个 PHP 核心函数将两个数组作为参数:
$a = array('1', '3');
$b = array('1'=>'apples', '2'=>'oranges', '3'=>'kiwis');
并执行一个交集,$a
检查数组中的值是否与数组中的键发生冲突$b
。返回类似的东西
array('1'=>'apples', '3'=>'kiwis');
是否存在这样的功能(我在文档中错过了),或者是否有一种非常优化的方法来实现相同的功能?
也许我快疯了,但我可以发誓说有一个 PHP 核心函数将两个数组作为参数:
$a = array('1', '3');
$b = array('1'=>'apples', '2'=>'oranges', '3'=>'kiwis');
并执行一个交集,$a
检查数组中的值是否与数组中的键发生冲突$b
。返回类似的东西
array('1'=>'apples', '3'=>'kiwis');
是否存在这样的功能(我在文档中错过了),或者是否有一种非常优化的方法来实现相同的功能?
尝试使用 array_flip {switches keys with their values},然后在您的示例中使用 array_intersect() :
$c = array_flip($b); // so you have your original b-array
$intersect = array_intersect($a,c);
我不是 100% 清楚你想要什么。你想检查来自 $a 的值和来自 $b 的 KEYS 吗?
有几个相交函数:
http://php.net/manual/en/function.array-intersect.php http://www.php.net/manual/en/function.array-intersect-key.php
但可能你需要:
http://www.php.net/manual/en/function.array-intersect-ukey.php以便您可以定义自己的函数来匹配键和/或值。
做一个简单foreach
的迭代第一个数组并从第二个数组中获取相应的值:
$output = array();
foreach ($a as $key) {
if (array_key_exists($key, $b)) {
$output[$key] = $b[$key];
}
}
只是 Gumbo 答案的一种变体,应该更有效,因为在进入循环之前对键进行测试。
$intersection = array_intersect($a, array_keys($b));
$result=array();
foreach ($intersection as $key) {
$result[$k]=$b[$k];
}