我有2个数组,一个数组是键的集合,另一个数组是数据的集合。
$array1 = ['0'=>'A1','1'=>'A2','2'=>'A3'];
和
$array2 = ['A1'=>'Data1','A2'=>'Data2','A3'=>'Data3','A4'=>'Data4','A5'=>'Data5'];
我想要这样的数据
$array = ['A1'=>'Data1','A2'=>'Data2','A3'=>'Data3']
答案 0 :(得分:1)
您可以为此使用array_filter:
$my_array = ['A1'=>'Data1','A2'=>'Data2','A3'=>'Data3','A4'=>'Data4','A5'=>'Data5'];
$allowed = ['0'=>'A1','1'=>'A2','2'=>'A3'];
$filtered = array_filter(
$my_array,
function ($key) use ($allowed) {
return in_array($key, $allowed);
},
ARRAY_FILTER_USE_KEY
);
var_dump($filtered);
输出:
array(3) {
["A1"]=>
string(5) "Data1"
["A2"]=>
string(5) "Data2"
["A3"]=>
string(5) "Data3"
}
答案 1 :(得分:0)
您也可以尝试使用该方法来获取问题中提到的$array2
的准确数据。
$array1 = ['0'=>'A1','1'=>'A2','2'=>'A3'];
$array2 = ['A1'=>'Data1','A2'=>'Data2','A3'=>'Data3','A4'=>'Data4','A5'=>'Data5'];
$ans = [];
foreach($array1 as $value)
{
if(isset($array2[$value]))
$ans[$value] = $array2[$value];
}
print_r($ans);
答案 2 :(得分:0)
您可以将$array1
设为dic,然后检查是否在dic中设置了$array2
中的键。
$array1 = array_flip($array1);
$result = [];
foreach($array2 as $k => $v){
if(isset($array1[$k])){
$result[$k] = $v;
}
}