Как преобразовать в одномерный массив ?

Печать / RSS
23


Землянин
0
Имеется код вывода каждого элемента из смешанного многомерного массива.

Вопрос: Как преобразовать этот массив в одномерный ?
   $m = array("Бурундук", "Суслик", "хомяк", 543, "крот"); // 5 элементов
$c = array("самолет", "Хозяин", 53, "Moscow", 34, "Montana", "London", 188, "Paris", "Tokyo"); // 10 элементов
$o = array("Хрусталь", "Изумруд", "Линейка", 333, "Водопад"); // 5 элементов
$f = array($m, $c, $o); // 20 элементов
$i = array($m, $o); // 10 элементов
$t = array($i, $c); // 20 элементов
$z = array($t, $i, $t); // 50 элементов
$w = array($m, $z, "народный", $c, "дерево", $z, "Лисенок", $o, "кирпичный", $z); // 174 элемента

function recursion($a) {
if (is_array($a)) {
for($i=0; $i < count($a); $i++) {
recursion($a[$i]); } }
else {
echo $a.'</hr>'; } }

recursion($w);
A

Пришелец
0
http://php.net/manual/ru/function.array-merge.php ?

Добавлено через 01:39 сек.
count($a) лучше выносить в переменную, так оно не будет каждый раз считать количество элементов

Добавлено через 02:53 сек.
А по поводу того, как из многомерного сделать одномерный - тут смотря в каком виде нужно его получить. Но всё равно нужно вызывать рекурсивно

Землянин
0
AkexandrFox, facepalm уже жалею, что попросил помощи... Если бы мне надо было тупо слить несколько массивов в один, то я бы просто тупо прогнал бы через цикл.kulak
Изменил: Суицидник (30.05.2017 / 01:03)
A

Пришелец
+1
Я вот не понимаю просто, что за упоротый кодинг.
Что, разве сложно по такому же принципу, как ты выводишь, просто создать новый массив.
<?php

Class Mass {

private $array = [];

public function __construct($array) {
$this->recursive($array);
}

private function recursive($array) {

foreach ($array as $key => $value) {
if(is_array($value)) {
$this->recursive($value);
} else {
$this->array[] = $value;
}
}

}

public function getArray() {
return $this->array;
}

}


$m = array("Бурундук", "Суслик", "хомяк", 543, "крот"); // 5 элементов
$c = array("самолет", "Хозяин", 53, "Moscow", 34, "Montana", "London", 188, "Paris", "Tokyo"); // 10 элементов
$o = array("Хрусталь", "Изумруд", "Линейка", 333, "Водопад"); // 5 элементов
$f = array($m, $c, $o); // 20 элементов
$i = array($m, $o); // 10 элементов
$t = array($i, $c); // 20 элементов
$z = array($t, $i, $t); // 50 элементов
$w = array($m, $z, "народный", $c, "дерево", $z, "Лисенок", $o, "кирпичный", $z);

$mass = new Mass($w);
echo '<pre>';
print_r($mass->getArray());

Добавлено через 04:44 сек.
Получается что-то вроде:
Array
(
[0] => Бурундук
[1] => Суслик
[2] => хомяк
[3] => 543
[4] => крот
[5] => Бурундук
[6] => Суслик
[7] => хомяк
[8] => 543
[9] => крот
[10] => Хрусталь
[11] => Изумруд
[12] => Линейка
[13] => 333
[14] => Водопад
[15] => самолет
[16] => Хозяин
[17] => 53
[18] => Moscow
[19] => 34
[20] => Montana
[21] => London
...

Будь проще, и люди тебе будут охотнее помогать.
В этот раз, для тебя я сделал исключение, чтобы ты не терял веру в человечество. А так, желание тебе помогать всё меньше и меньше
Изменил: AkexandrFox (30.05.2017 / 01:10)

Землянин
-2
AkexandrFox, где-то я уже это слышал D
J

Землянин
-1
Тв0й батя,Между прочим AkexandrFox дельный совет дал, хорош кичиться, простого спасибо было бы приятней услышать.

Землянин
-1
JiGaN, не за что D
Для выполнения действия необходимо авторизоваться!
Стикеры / Теги / Правила / Топ тем / Топ тем / Поиск