从键位于第二个数组中的第一个数组返回键值

时间:2019-08-12 06:16:36

标签: php arrays

我有两个数组,我只想按键从第一个数组中搜索,这是我在第二个数组中要搜索的,而作为第三个数组,我要打印结果:

$colldata=array("bench-press-rod"=>'',"adidas-classic-backpack"=>'93549559913',"adidas-classic-backpack-legend-ink-multicolour"=>'',"puma-suede-classic-regal"=>'93549920361,93549723753');
$colldata2=array(0 => 'bench-press-rod',1 => 'adidas-classic-backpack');

预期结果:

array('bench-press-rod'=>'',"adidas-classic-backpack"=>'93549559913');

3 个答案:

答案 0 :(得分:1)

您可以在PHP的一行中执行此操作,使用array_flip交换第二个数组的键和值,然后使用array_intersect_key合并匹配键上的两个数组:

$colldata=array("bench-press-rod"=>'',"adidas-classic-backpack"=>'93549559913',"adidas-classic-backpack-legend-ink-multicolour"=>'',"puma-suede-classic-regal"=>'93549920361,93549723753');
$colldata2=array(0 => 'bench-press-rod',1 => 'adidas-classic-backpack');

print_r(array_intersect_key($colldata, array_flip($colldata2)));

输出:

Array
(
    [bench-press-rod] => 
    [adidas-classic-backpack] => 93549559913
)

Demo on 3v4l.org

答案 1 :(得分:1)

关于我能想到的最简单的方法是循环遍历第二个数组,并将匹配的键从第一个数组添加到输出中。如果该项不存在,则将Not found放入输出...

$output = [];
foreach ( $colldata2 as $item ) {
    $output[$item] = $colldata[$item] ?? 'Not found';
}
print_r($output);

给..

Array
(
    [bench-press-rod] => 
    [adidas-classic-backpack] => 93549559913
)

答案 2 :(得分:0)

检查。

$colldata=array("bench-press-rod"=>'',"adidas-classic-backpack"=>'93549559913',"adidas-classic-backpack-legend-ink-multicolour"=>'',"puma-suede-classic-regal"=>'93549920361,93549723753');
$colldata2=array(0 => 'bench-press-rod',1 => 'adidas-classic-backpack');

$result = [];
foreach ($colldata2 as $key => $value) {
    if (array_key_exists($value, $colldata)) {
        array_push($result,$colldata[$value]);
    }            
}
echo '<pre/>';
print_r($result);
相关问题