У меня есть следующий массив:
$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".
Какой был бы оптимальный способ решить эту проблему?
Должно работать следующее:
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;
}
Вероятно, вам придется его отрегулировать (например, удалить лишний :
в конце).