Autor Zpráva
aqeqweqwe
Profil *
Ahoj mam toto pole:
Array ( [test] => auto [test2] => Array ( [x] => traktor [y] => motorka ) )

a potreboval bych docilit vypisu:
test = auto
test2.x = traktor
test2.y = motorka

jak to udelam? :)
Taps
Profil
aqeqweqwe:
<?php
$retez='';
$pole=array('test' => 'auto', 'test2' => Array ( 'x' => 'traktor', 'y' => 'motorka' ) ); 

    foreach($pole as $t => $value){
        if(!is_array($value)){
            $retez.= $t.'='.$value.'<br>';
        }
        else{
            foreach($value as $pole2 =>$index){
                $retez.=  $t.'.'.$pole2. '=' .$index.'<br>';
                }
            }
        }
   
   echo $retez;

?>
Tori
Profil
Anebo rekurzivní funkce (pro libovolnou hloubku zanoření):
$pole = array('test' => 'auto', 'test2' => array('x' => 'traktor', 'y' => 'motorka')); 
function vypisPole($pole, $rodic = '') {
    $vystup = '';
    foreach ($pole as $klic => $hodnota) {
        if (is_array($hodnota))
            $vystup .= vypisPole($hodnota, ($rodic ? "$rodic.$klic" : $klic)); // opraveno
        else 
            $vystup .= "<br>" . ($rodic ? $rodic.'.' : '') . "$klic = $hodnota";
    }
    return $vystup;
}
echo vypisPole($pole);
edit: opravila jsem chybějící nadřazený klíč.
juriad
Profil
Trochu univerzalnější přístup na motivy Torina řešení.
Funkce zplosti udělá z vícerozměrného pole jednorozměrné; jeho klíče budou klíče jednotlivých zanořených polí oddělené oddělovačem.

$pole = array('test' => 'auto', 'test2' => array('x' => 'traktor', 'y' => 'motorka'));

function _zplosti($pole, $prefix, $oddelovac, &$vysledek) {
    foreach ($pole as $klic => $hodnota) {
        if (is_array($hodnota))
            _zplosti($hodnota, $prefix . $klic . $oddelovac, $oddelovac, $vysledek);
        else
            $vysledek[$prefix . $klic] = $hodnota;
    }
}

function zplosti($pole, $oddelovac) {
  $vysledek = array();
  _zplosti($pole, '', $oddelovac, $vysledek);
  return $vysledek;
}

$pole2 = zplosti($pole, '.');
foreach($pole2 as $klic => $hodnota) {
  echo $klic . ' = ' . $hodnota . PHP_EOL;
}
aqeqweqwe
Profil *
Diky mozna bude pro me lepsi to udelat trochu jinak.
Jak bych z toho puvodniho pole:
Array ( [test] => auto [test2] => Array ( [x] => traktor [y] => motorka ) )

udelal pole:
Array ( [test] => auto [test2.x] => traktor [test2.y] => motorka ) )
juriad
Profil
aqeqweqwe:
To přesně dělá moje funkce zplosti :)
aqeqweqwe
Profil *
juriad:

super moc diky :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0