Php 如何在数组中保留特定的键值元素并删除rest?
$1Php 如何在数组中保留特定的键值元素并删除rest?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,$1 Array ( [2018] => Array () [2019] => Array ( [5] => 2966 ) [2020] => Array ( [0] => 2930 [1] => 2919 ) ) 第二个阵列是: 美元成本 Array ( [2018] => Arr
Array (
[2018] => Array ()
[2019] => Array
(
[5] => 2966
)
[2020] => Array
(
[0] => 2930
[1] => 2919
)
)
第二个阵列是:
美元成本
Array
(
[2018] => Array
(
[2789] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
[2874] => Array
(
[jh] => 0.5
[presta] => 1
[log] => 0
)
[3786] => Array
(
[jh] => 7
[presta] => 0
[log] => 0
)
[315] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
[325] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
[3793] => Array
(
[jh] => 0.5
[presta] => 1.2
[log] => 0
)
[3796] => Array
(
[jh] => 22
[presta] => 27.4
[log] => 0
)
[3798] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
[3800] => Array
(
[jh] => 17
[presta] => 0
[log] => 0
)
[3832] => Array
(
[jh] => 2
[presta] => 9
[log] => 0
)
)
[2019] => Array
(
[2930] => Array
(
[jh] => 1
[presta] => 0
[log] => 0
)
[3786] => Array
(
[jh] => 4
[presta] => 0
[log] => 0
)
[315] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
[3796] => Array
(
[jh] => 14
[presta] => 44
[log] => 0
)
[3834] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
[2966] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
)
[2020] => Array
(
[2930] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
[2919] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
)
)
我只想保留第二个数组中第一个数组中的记录,我想取消第二个数组中剩余记录的设置
如何仅保留第2个数组中与第1个数组中的键值匹配的记录?您可以使用
这将减少迭代次数
$result=[];
foreach ($array_one as $k => $val) {
if (!empty($val))
$result[$k] = array_intersect_key($costs[$k], array_flip($val));
}
print_r($result);
最终,它将只保留那些与
array\u one
匹配的索引数据这是代码的循环版本:
输出:
Array
(
[2019] => Array
(
[2966] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
)
[2020] => Array
(
[2930] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
[2919] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
)
)
只需使用两个foreach循环并检查索引是否匹配,如果不匹配,请使用unset()欢迎我的奖励+1:D
$output = array();
foreach ($array_one as $key => $keys) {
if (count($keys))
$output[$key] = array_intersect_key($costs[$key], array_flip($keys));
}
print_r($output);
Array
(
[2019] => Array
(
[2966] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
)
[2020] => Array
(
[2930] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
[2919] => Array
(
[jh] => 0
[presta] => 0
[log] => 0
)
)
)