从大数据收集中过滤数组

时间:2019-10-16 05:42:56

标签: php

我有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']

3 个答案:

答案 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"
}

演示:https://3v4l.org/ZvkJb

信用:PHP: How to use array_filter() to filter array keys?

答案 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;
    }
}