PHP dynamically get the data from a sub array -
i have question. have script renames array keys.
now want in sub level array if needed.
current situation
the current code have works :
///######## if original key has been set if(isset($this->prepareddata[$key]) === true){ ///######## add data prepared data variable $this->prepareddata[$value] = $this->prepareddata[$key]; ///######## unset original key unset($this->prepareddata[$key]); }
but want code able set following dynamically:
///######## if original key has been set if(isset($this->prepareddata[$subkey1][$key]) === true){ ///######## add data prepared data variable $this->prepareddata[$subkey1][$value] =$this->prepareddata[$subkey1][$key]; ///######## unset original key unset($this->prepareddata[$subkey1][$key]); }
question
but want dynamically:
so be:
$this->prepareddata[$subkey1][$key]
but also:
$this->prepareddata[$subkey1][$subkey2][$key]
but also:
$this->prepareddata[$subkey1][$subkey2][$subkey3][$key]
and @ hand of array
desired situation
so set:
methodname('wheels', array('car', 'mustang'));
that mean :
$this->prepareddata['car']['mustang']['wheels']
the question have.. is... how this? because want able call:
methodname('wheels');
meaning:
$this->prepareddata['wheels']
thank you!!
the solution (by splash58):
function methodname($key, $path = array()) { global $array; $p = &$array; // point array foreach($path $step) // walk trough path needed level $p = &$p[$step]; return $p[$key]; //take value } $array = array( // test array 'wheels'=> 'wheels1', 'car' => array( 'mustang' => array( 'wheels'=> 'wheels2'))); echo methodname('wheels', array('car', 'mustang')) . "\n"; // wheels2 echo methodname('wheels'); // wheels1
move enviroment
function methodname($key, $path = array()) { global $array; $p = &$array; // point array foreach($path $step) // walk trough path needed level $p = &$p[$step]; return $p[$key]; //take value } $array = array( // test array 'wheels'=> 'wheels1', 'car' => array( 'mustang' => array( 'wheels'=> 'wheels2'))); echo methodname('wheels', array('car', 'mustang')) . "\n"; // wheels2 echo methodname('wheels'); // wheels1
Comments
Post a Comment