不幸的是,array_slice()将忽略基于键/索引的数组之间的任何关联。 array_slice()使用offset值进行操作;这就是为什么它是不适合这项工作的工具。
array_intersect_key()是使用另一个数组的键过滤数组的合适调用。
代码:(演示)
for($char='A',$score=100; $score>0; ++$char,--$score){
$dr_img_scores1["IMG_$char"]=$score; // generate 100 unique elements
}
//var_export($dr_img_scores1); // uncomment to see what this looks like
// eight arbitrary elements to use as extraction keys on $array1
$dr_img_scores2=['IMG_CL'=>13,'IMG_Z'=>44,'IMG_BP'=>82,'IMG_L'=>50,
'IMG_CD'=>2,'IMG_X'=>91,'IMG_BM'=>7,'IMG_AV'=>0];
var_export(array_intersect_key($dr_img_scores1,$dr_img_scores2));
// notice that $dr_img_scores1's element order is preserved
输出:
array (
'IMG_L' => 89,
'IMG_X' => 77,
'IMG_Z' => 75,
'IMG_AV' => 53,
'IMG_BM' => 36,
'IMG_BP' => 33,
'IMG_CD' => 19,
'IMG_CL' => 11,
)
注意:$dr_img_scores1无论$dr_img_scores2是否按顺序,您都可以使用ksort()它们来同步它们的顺序,以便轻松直观地比较分数。