我想合并两个数组:
$filtered = array(1 => 'a', 3 => 'c');
$changed = array(2 => 'b*', 3 => 'c*');
而合并应包括 $filtered 的所有元素和 $changed 的所有元素,这些元素在 $filtered 中有相应的键:
Whereas the merge should include all elements of $filtered and all those elements of $changed that have a corresponding key in $filtered:
$merged = array(1 => 'a', 3 => 'c*');
array_merge($filtered, $changed) 也会将 $changed 的附加键添加到 $filtered 中.所以不太合适.
array_merge($filtered, $changed) would add the additional keys of $changed into $filtered as well. So it does not really fit.
我知道我可以使用 $keys = array_intersect_key($filtered, $changed) 来获取两个数组中存在的键,这已经完成了一半的工作.
I know that I can use $keys = array_intersect_key($filtered, $changed) to get the keys that exist in both arrays which is already half of the work.
但是我想知道是否有任何(本机)函数可以将 $changed 数组减少为具有 array_intersect_key 指定的 $keys 的数组代码>?我知道我可以使用带有回调函数的 array_filter 并检查其中的 $keys,但可能还有其他一些纯本机函数来仅从数组中提取那些元素可以指定键吗?
However I'm wondering if there is any (native) function that can reduce the $changed array into an array with the $keys specified by array_intersect_key? I know I can use array_filter with a callback function and check against $keys therein, but there is probably some other purely native function to extract only those elements from an array of which the keys can be specified?
我这么问是因为原生函数通常比带有回调的 array_filter 快得多.
I'm asking because the native functions are often much faster than array_filter with a callback.
如果我正确理解你的逻辑,应该这样做:
This should do it, if I'm understanding your logic correctly:
array_intersect_key($changed, $filtered) + $filtered
<小时>
实施:
$filtered = array(1 => 'a', 3 => 'c');
$changed = array(2 => 'b*', 3 => 'c*');
$expected = array(1 => 'a', 3 => 'c*');
$actual = array_key_merge_deceze($filtered, $changed);
var_dump($expected, $actual);
function array_key_merge_deceze($filtered, $changed) {
$merged = array_intersect_key($changed, $filtered) + $filtered;
ksort($merged);
return $merged;
}
输出:
Expected:
array(2) {
[1]=>
string(1) "a"
[3]=>
string(2) "c*"
}
Actual:
array(2) {
[1]=>
string(1) "a"
[3]=>
string(2) "c*"
}
这篇关于如何通过仅从与第一个数组具有相同键的第二个数组中接管值来合并两个数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
以编程方式将可下载文件添加到 Woocommerce 产品Add programmatically a downloadable file to Woocommerce products(以编程方式将可下载文件添加到 Woocommerce 产品)
获取今天 Woocommerce 中每种产品的总订单数Get today#39;s total orders count for each product in Woocommerce(获取今天 Woocommerce 中每种产品的总订单数)
在 WooCommerce 和电话字段验证问题中添加自定义注Add Custom registration fields in WooCommerce and phone field validation issue(在 WooCommerce 和电话字段验证问题中添加自定义注册字段
在 Woocommerce 简单产品中添加一个将更改价格的选Add a select field that will change price in Woocommerce simple products(在 Woocommerce 简单产品中添加一个将更改价格的选择字段)
在 WooCommerce 3 中将自定义列添加到管理产品列表Add custom columns to admin products list in WooCommerce 3(在 WooCommerce 3 中将自定义列添加到管理产品列表)
自定义结帐“下订单"按钮输出htmlCustomizing checkout quot;Place Orderquot; button output html(自定义结帐“下订单按钮输出html)