Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Poradí někdo jak vytvořit pole z pole v PHP

Ahoj, mám takové pole které se mění obsahem i hloubkou

$arr                = array();
$arr['a']           = array('FOO' => 'a',   'BAR' => 'a2');
$arr['a']['b']      = array('FOO' => 'ab',  'BAR' => 'ab2');
$arr['a']['b']['c'] = array('FOO' => 'abc', 'BAR' => 'abc2');

pak znám klíče pro nová pole která potřebuji vytvořit které jsou totožné s klíči které potřebuji vypsat

$dis = array('a', 'b', 'c');

a takové pole potřebuji ve finále získat

$newarr = array();
$newarr['a'] = array('FOO' => 'a',   'BAR' => 'a2');
$newarr['b'] = array('FOO' => 'ab',  'BAR' => 'ab2');
$newarr['c'] = array('FOO' => 'abc', 'BAR' => 'abc2');

Chodí sem nějaký prosík ? Díky za pomoc...

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
$newarr = array(); $oldkey = NULL; while ($key = array_shift($dis)) { if ($oldkey !== NULL) unset($n…
los 05.06.2014 00:28
los
Pekne reseni. Pokud to dobre chapu, tak predpoklad zde je, ze klice v $arr a jim odpovidajici hodnot… nový
navay 05.06.2014 01:36
navay
Tak si zadal ty to zadanie. Nevysvetlil si jak sa chces podla kluca 'a','x','y' dostat k polu ['a','… nový
MM.. 05.06.2014 01:47
MM..
Ja jsem nic nezadal ;-), take nevim jak to Marrek presne myslel. Mozna ze mu to losovo reseni bude s… nový
navay 05.06.2014 02:49
navay
Jaj sorry, sa mi poplietli nicky :) Ano je to pekne riesenie a funguje tak jak pises. nový
MM.. 05.06.2014 02:55
MM..
Ked to ma byt uplne nahodne a hladas prvy vyskyt kluca, tak potrebujes pre kazdy znak z $dis prehlad… nový
MM.. 05.06.2014 01:56
MM..
t.j. upravene to rekurzivne hladanie na hladanie vyskytov kluca a ne hodnoty function search($array… nový
MM.. 05.06.2014 02:18
MM..
Áno, je to tak. Keď na to pozerám teraz za denného svetla, tak po správnosti by malo byť: while (($… nový
los 05.06.2014 09:33
los
Ahoj. $newarr[$oldkey = $key] = $arr = $arr[$key]; co přesně dělá tento řádek, můžete prosím ten k… nový
Juniorh 10.06.2014 15:03
Juniorh
$oldkey = $key; // zapamätáme si hodnotu kľúča kvôli spracovaniu v ďalšej iterácii $arr = $arr[$key]… poslední
los 11.06.2014 15:53
los
Myslim, ze nejen me by ciste ze zvedavosti zajimalo z ceho vznika takovahle struktura. Ja si totiz n… nový
navay 05.06.2014 10:13
navay

Ked to ma byt uplne nahodne a hladas prvy vyskyt kluca, tak potrebujes pre kazdy znak z $dis prehladat cele to pole (nedestruktivne) a hladat prvy vyskyt. T.j. vnorene cykly alebo rekurzivna funkcia ktora prehlada cele pole, a zavolas ju pre kazdy z tych znakov z $dis.

P.S> na prehladavanie pola si uz daval vyssie link, tak si to len trochu uprav.

t.j. upravene to rekurzivne hladanie na hladanie vyskytov kluca a ne hodnoty

function search($array, $key)
{
    $results = array();

    if (is_array($array)) {
        if (isset($array[$key])) {
            $results[] = $array[$key];
        }

        foreach ($array as $subarray) {
            $results = array_merge($results, search($subarray, $key));
        }
    }

    return $results;
}

a z navratovej hodnoty pouzijes results['FOO'] a results['BAR'] a zbytok zahodis, ptz v results bude aj to podpole ktore nechces.

Myslim, ze nejen me by ciste ze zvedavosti zajimalo z ceho vznika takovahle struktura. Ja si totiz nedokazu predstavit na co to realne aplikovat. Trosku to pripomina system adresaru a souboru, kdy by mohlo mit nejaky vyznam to razeni podle abecedy. Hloda mi to v hlave :-), prozrad prosim Marrku k cemu to slouzi, z ceho to vznika, nebo nejaky realnejsi uryvek dat z toho pole...

Zpět do poradny Odpovědět na původní otázku Nahoru