PDA

Volledige versie bekijken : multidimensionale array dynamisch opvullen


promic
%Europe/Berlin %903 %2010, 22:41
Hallo,

Ik heb een multidimensionale array in PHP die ik zou moeten aanspreken op posities die nog niet gekend zijn.

normaalgezien spreek je deze aan met $mijnArray['key']['key']['key']
het probleem is nu dat ik nog niet weet hoe 'diep' ik in de array zal moeten graven

de 1e keer zal ik slechts 1 key hebben, de andere keer 2 keys etc

de keys zitten opgesloten in een array, ik zou dus de key array moeten kunnen doorlopen en telkens een ['key'] achter de arraynaam plaatsen

vervolgens moet ik deze positie in de array opvullen met een bepaalde waarde

heeft iemand een idee of dit mogelijk is?

ik hoop dat ik duidelijk was :)

alvast bedankt

Dauntless
%Europe/Berlin %937 %2010, 23:29
Ik ben zelf geen PHP held, maar zo zou ik het doen:
<?php

$keys = array("this", "is", 5, "a", "key");

$demo["this"]["is"][5]["a"]["key"] = "Hello";
$value = $demo;
for($i = 0; $i<count($keys); $i++)
{
$value = $value[$keys[$i]];
}
//nu steekt de "Hello" in $value
print $value;



//als je hem wil toekennen moet je 1ntje minder diep gaan
$value = &$demo;
for($i = 0; $i<count($keys) - 1; $i++)
{
$value = &$value[$keys[$i]];
}

$value[$keys[$i]] = "World";

//verifiëren

print $demo["this"]["is"][5]["a"]["key"];


?>
(Let op de &pointer)

promic
%Europe/Berlin %738 %2010, 18:43
dit is opgelost bedankt!

WernerL
%Europe/Berlin %755 %2010, 19:08
Als je vantevoren niet weet hoe diep hij in de array zou moeten graven zou ik een loop-back functie schrijven. En met een foreach loop kun je trouwens ook door de keys krijgen. :-)

Iets als:

function getArrayValue($array)
{
foreach($array as $key => $val)
{
if(is_array($array[$key])){
return getArrayValue($array[$key];
}
else
{
return $val;
}
}
}


Ofzoiets... maar je hebt het al opgelost dusch... :-) Slechts even een kleine suggestie hier.