比较2个数组中的键和值并存储相同的值

时间:2013-12-03 20:32:38

标签: php

我想将一个数组中的键与另一个数组中的值进行比较,并且在匹配时存储第一个数组的值(其键与第二个数组中的值匹配)。

使用我的代码,它总是回显4。如何修改它以便回显1 2 3 4

代码:

$first = array('location', 'genre', 'studio', 'Lord_Of_the_Rings');
$second = array(
    'location' => 1, 
    'genre' => 2, 
    'studio' => 3, 
    'Lord_Of_the_Rings' => 4
);


while ($el = current($second)) {
    $d .=  ','.key($second);
    next($second);
}
$d = ltrim($d, ',');
$d = explode(',', $d);

foreach ($first as $the_tax) {

    foreach ($d as $key => $v) {
        if (in_array($v, $first)) {
            $t = $second[$v];
        }
    }

    echo $t.'<br>';
}

3 个答案:

答案 0 :(得分:2)

说实话,如果你不解释你的目标,我甚至不会理解你的代码想要做什么。试试这样:

<?php
$first = array('location', 'genre', 'studio', 'Lord_Of_the_Rings');
$second = array(
    'location' => 1, 
    'genre' => 2, 
    'studio' => 3, 
    'Lord_Of_the_Rings' => 4
);

$intersect = array_intersect($first, array_keys($second));
foreach($intersect as $key)
    echo $second[$key];

?>

答案 1 :(得分:0)

您应该移动/添加echo语句到您指定$t值的块中,也许这样:

foreach ($first as $the_tax) {

    foreach ($d as $key => $v) {
        if (in_array($v, $first)) {
            $t = $second[$v];
            echo $t.' ';
        }
    }

    echo '<br>';
}

答案 2 :(得分:0)

你可以翻转第二个数组中的键,然后沿着这些行的某些东西的交点

<?php
$first = array('location', 'genre', 'studio', 'Lord_Of_the_Rings');
$second = array(
    'location' => 1, 
    'genre' => 2, 
    'studio' => 3, 
    'Lord_Of_the_Rings' => 4
  );
$flipped = array_flip($second); 
print implode(' ',array_keys(array_intersect($flipped, $first)));
?>