在PHP中合并二维数组中的值

时间:2015-01-12 08:27:22

标签: php arrays

我有以下数组:

$array = array
(
    'firstname' => array('Daniel', 'John'),
    'lastname' => array('Smith', 'Larsson')
);

我想把它变成:

$array = array('firstname=daniel:lastname=smith', 
'firstname=daniel:lastname=larsson', 
'firstname=john:lastname=smith',
'firstname=john:lastname=larsson');

当然,数组可以包含更多名称,并且除了“firstname”和“lastname”之外还有更多字段。

解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

以下内容应该有效:

function combine($fields) {
    if (!count($fields)) return array('');

    $values = reset($fields);
    $field = key($fields);

    array_shift($fields);
    $suffixes = combine($fields);

    $options = array();
    foreach ($values as $value) {
        $options = array_merge($options, array_map(function($suffix) use($field, $value) {
            return "$field=$value:$suffix";
        }, $suffixes));
    }

    return $options;
}

你可能需要调整它(比如最后删除额外的:)。