У меня есть массив как это:Свести массив, сохраняя при этом ключевые пары значений в PHP
array (size=4)
0 =>
array (size=4)
key => value
key => value
key => value
key => value
1 =>
array (size=2)
key => value
key => value
2 =>
array (size=1)
key => value
3 =>
array (size=1)
key => value
Я хочу, чтобы сгладить массив таким:
array (size=4)
key => value
key => value
key => value
key => value
key => value
key => value
key => value
key => value
Я попробовал свои собственные решения, используя такие вещи, как array_merge
, array_walk_recursive
и RecursiveIteratorIterator
с RecursiveArrayIterator
. Я также попробовал много решений, размещенных по аналогичным вопросам в StackOverflow, но никто из них не работает так, как я ожидал. Они либо не сохраняют пары ключевых значений, либо дают мне массив, который идентичен оригиналу. Мои попытки выглядеть примерно так:
$multidimensionalArray = array(stuff goes here);
$flatArray = array();
function flattenArray ($array) {
foreach ($array as $key => $value) {
if (is_array($value) {
flattenArray($value);
}
else {
$flatArray[$key] = $value;
}
}
}
flattenArray($multidimensionalArray);
Возможный дубликат [? Как Свести многомерный массив] (http://stackoverflow.com/questions/1319903/how-to-flatten-a-multidimensional-array) –
Возможно, вы не сможете получить доступ к глобальной переменной '$ flatArray' внутри вашей функции. Объявите его глобальным внутри или передайте его по ссылке на функцию –
Вы правы, я не получал доступ к переменной внутри функции. Когда я проверяю содержимое $ flatArray в цикле, я вижу, что он правильно сглаживает каждый дополнительный массив, но они не соединяются вместе. Я попытался использовать array_merge, чтобы исправить это, но после того, как петли закончены, я заканчиваю только конечной парой значений ключа. – user6679670