Php 从大数据收集数据中筛选阵列

Php 从大数据收集数据中筛选阵列,php,Php,我有两个数组,一个是密钥集合,另一个是数据集合 $array1 = ['0'=>'A1','1'=>'A2','2'=>'A3']; 及 我想要这样的数据 $array = ['A1'=>'Data1','A2'=>'Data2','A3'=>'Data3'] 您可以为此使用: $my_array = ['A1'=>'Data1','A2'=>'Data2','A3'=>'Data3','A4'=>'Data4','A5'=>

我有两个数组,一个是密钥集合,另一个是数据集合

$array1 = ['0'=>'A1','1'=>'A2','2'=>'A3']; 

我想要这样的数据

$array = ['A1'=>'Data1','A2'=>'Data2','A3'=>'Data3']
您可以为此使用:

$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"
}
演示:


信用证:

您也可以尝试此项,以获得您在问题中提到的
$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);

您可以将
$array1
设置为dic,然后检查dic中是否设置了输入
$array2

$array1 = array_flip($array1);
$result = [];
foreach($array2 as $k => $v){
    if(isset($array1[$k])){
        $result[$k] = $v;
    }
}

您应该更新问题中的代码以匹配演示。事实上,问题中的内容是行不通的。复制(IMHO)的最佳选项是
$output=array\u intersect\u key($array2,array\u flip($array1))
我刚刚键入了答案。同意奈杰尔的观点。
$array1 = array_flip($array1);
$result = [];
foreach($array2 as $k => $v){
    if(isset($array1[$k])){
        $result[$k] = $v;
    }
}