как переставить два ключа массива друг с другом

Как объединить каждое значение из одного массива с другим, чтобы создать структуру, которая будет источником для таблицы.
Пример, у нас есть массив:

$a = array(
'animal' => ['horse', 'donkey', 'elephant'],
'food' => ['grass', 'hay', 'acorn'],
);

And the effect I need is:

$result = array(
'horse' = array(
'grass' => [ 'animal' => 'horse', 'food' => 'grass'],
'hay' => [ 'animal' => 'horse', 'food' => 'hay'],
'acorn' => [ 'animal' => 'horse', 'food' => 'acorn'],
},
'donkey' = array(
'grass' => [ 'animal' => 'donkey', 'food' => 'grass'],
'hay' => [ 'animal' => 'donkey', 'food' => 'hay'],
'acorn' => [ 'animal' => 'donkey', 'food' => 'acorn'],
},
'elephant' = array(
'grass' => [ 'animal' => 'elephant', 'food' => 'grass'],
'hay' => [ 'animal' => 'elephant', 'food' => 'hay'],
'acorn' => [ 'animal' => 'elephant', 'food' => 'acorn'],
},
);

Но мой вопрос также заключается в том, можно ли обобщить алгоритм на произвольно большие измерения.

0

Решение

Что касается алгоритмов, я бы сказал, попробовать что-то самостоятельно.

При этом я предлагаю начать с вложенных циклов foreach:

$result = array();

foreach ($a['animal'] as $val) {
$result[$val] = array();
foreach ($a['food'] as $val2) {
$result[$val][$val2] = array('animal' => $val, 'food' => $val2);
}
}

а затем, возможно, расширить этот код, чтобы быть модульным / настраиваемым.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]