2 回答

TA贡献1826条经验 获得超6个赞
这是此答案中代码的循环版本:
$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
)
)
)

TA贡献1793条经验 获得超6个赞
您可以使用array_intersect_key,
foreach($costs as $k => &$val) // & to save value to value itself
{
if(!empty($array_one[$k])){
$val = array_intersect_key($val, $array_one[$k]);
}
}
这将减少迭代次数,
$result=[];
foreach ($array_one as $k => $val) {
if (!empty($val))
$result[$k] = array_intersect_key($costs[$k], array_flip($val));
}
print_r($result);
最终,它只会保留那些匹配的索引数据 array_one
- 2 回答
- 0 关注
- 167 浏览
添加回答
举报