<?php
$a=["g41"=>1,"g44"=>2,"g53"=>3];
$list=[40,41,44,46,53];
$result =[];
foreach($a as $key => $value){
$new_key = substr($key,1); //remove first character, if only you first key always single char, else you may use your own method to extract key
if(in_array($new_key,$list)){
$result[$new_key] = $value;
unset($list[array_search($new_key, $list)]);//remove used key
}
}
//push remaining as null
foreach($list as $v){
$result[$v] = null;
}
print_r($result);
5条答案
按热度按时间gcxthw6b1#
迭代
$list
数组并检查另一个$a
数组中的键:输出:
mu0hgdu02#
由于您希望结果序列遵循
$a
,因此您可能需要取消设置$list
,并将剩余列表推送到$result
示例代码如下:
1l5u6lss3#
编写自定义脚本
yk9xbfzb4#
1.循环
$list
数组1.检查列表值(前缀为
g
)是否存在于$a
数组中,如果存在,则用所需的数字键将其压入结果数组中;如果没有,则将其推入具有所需数字键和默认值null
的备用数组中。1.完成迭代后,将替代数组中的数据追加到结果数组中。
这将正确地过滤您的数据,应用预期的默认值,并完全按照请求对输出进行排序。
代码:(Demo)
我使用
?? []
回退到一个空数组,以防这两个数组中的任何一个从未声明(从未接收任何元素)。gdrx4gfi5#
看起来你首先要做的是转换数组
$a
中的键,然后使用你的$list
键来填充$a
中没有的空值。