PHP - 如何匹配2组数组

时间:2016-02-11 03:37:01

标签: php arrays json

我正在使用php构建一个JSON文件,我想将$ Array2的ID与Array1匹配,并显示array1的ID的匹配值。我怎样才能做到这一点?请参阅以下代码:

$array1 = array(
    '1' => 'a', 
    '2' => 'b',
    '3' => 'c',
    '4' => 'd'
);
$string = "1,3|2,3|1,4";
$array2 = explode('|', $string);

$foo = '';

foreach ($array2 as $item) {
    $foo .= '{' . $item . '},';
}

echo $foo;

结果显示 - {1,3},{2,3},{1,4},但是 我想要结果 {a,c},{b,c},{a,d}

非常感谢。

2 个答案:

答案 0 :(得分:0)

<?php

function answer($string, $ids) {
    $pairs = explode('|', $string);

    return implode(',', array_map(function($pair) use ($ids) {

        // Get the first and second ID from the pair.
        list($x, $y) = explode(',', $pair);

        // Fetch from the other array and join them.
        return sprintf('{%s,%s}', $ids[$x], $ids[$y]);

    }, $pairs));
}

echo answer("1,3|2,3|1,4", array(
    '1' => 'a', 
    '2' => 'b',
    '3' => 'c',
    '4' => 'd'
));

// {a,c},{b,c},{a,d}

Run this snippet

答案 1 :(得分:0)

我猜是这样的:

foreach ($array2 as $items) {
    $values = implode(',', array_map(function($i) use ($array1) {
        return $array1[$i];
    }, explode(',', $items)));
    $foo .= "{" . $values. "},";
}

array_map中的函数将$array2中的数字转换为$array1中的相应值。

DEMO