Autor Zpráva
pmasarik
Profil
Ahoj mám viacrozmerné pole presne takéto (pole môže byt 1, 2 alebo 3 rozmerné):


Array
(
[nieco] => Array
(
[nieco2] => Array
(
[nieco3] => Array
(
)

)

)

)


A potrebujem s toho urobit toto:


Array
(
[0] => nieco
[1] => nieco2
[2] => nieco3
)


Urobil som si funkciu:

function one_array($p) {
global $m;
if(!isset($m)) $m = array();
foreach($p as $k => $v) {
$m[] = $k;
if (is_array($v)) {
one_array($v);
}
}
return $m;
}

Ale problem je ten že ak túto funkciu použijem vo funkcii ktorá je rekurzívna tak sa mi to nové pole $m zvečšuje pri každom prechode cyklom a to ja nechcem.

V jednoduchom cykle dám jednoducho unset($m); a všetko funguje, ale vo funkcii to nemožem ani za svet ošetriť.
ronnie
Profil
Lze to řešit např. funkcí array_walk_recursive(), projde vícerozměrové pole a klíče a hodnoty pošle jiné funkci, která je může naplnit do pole.
pmasarik
Profil
No to by bolo super, ale nejako neviem použiť tú funkciu na to moje perfektné pole.
ronnie
Profil
Aha, tak to bude problém. Array_walk_recursive() takto nelze použít. Myslím, že to jinak než přes rekurzi vyřešit nepůjde.
pmasarik
Profil
No to som zistil že to inak nepojde, len neviem prečo ked to použijem v inej funkcii tak sa mi to pole zvečšuje...
Toto téma je uzamčeno. Odpověď nelze zaslat.