Объединить значения в 2-мерном массиве в PHP

0

У меня есть следующий массив:

$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".

Какой был бы оптимальный способ решить эту проблему?

  • 0
    Рекурсивная функция должна быть оптимальным способом, так как вы практически используете один и тот же шаблон во всем массиве ( ссылка ).
Теги:
arrays

1 ответ

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;
}

Вероятно, вам придется его отрегулировать (например, удалить лишний : в конце).

  • 0
    Спасибо! Этот отлично работает :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню