Ok, así que tiene una matriz que contiene los siguientes elementos:PHP: Establecer el valor de un elemento de matriz asociativa multidimensional usando una trayectoria definida en una matriz separada
$array['a']['b'][0]['c'];
$array['a']['b'][1]['c'];
$array['a']['d'][0]['c']['c'];
$array['b']['c'];
Luego, en una matriz separada, he definido la ruta de acceso a estos valores:
$structure[0] = array('a','b','#','c');
$structure[1] = array('a','d','#','c','c');
$structure[2] = array('b','c');
último, tengo una matriz que tiene los valores:
$values[0] = array('value0-0','value0-1');
$values[1] = array('value1-0');
$values[2] = array('value2-0');
Estoy tratando de encontrar una función/bucle simple que pueda aplicar los valores en $ valores a la ruta de la matriz de $ array que se define en $ structure.
El resultado final sería:
$array['a']['b'][0]['c']='value0-0';
$array['a']['b'][1]['c']='value0-1';
$array['a']['d'][0]['c']['c']='value1-0';
$array['b']['c']='value2-0';
En el caso de $ valores [0] o valores $ [1], que serían capaces de bucle a través de cada valor y sustituir el $ estructura elemento coincidente ' # 'con el número de iteración para ese valor en particular $.
¿Se trata simplemente de un nudillo y escribir una función recursiva prolongada, o hay una construcción inteligente o una función php que podría proporcionar una solución más elegante?
Solución:
Gracias a Mario, mi solución final es:
foreach ($struct as $i=>$keys)
foreach ($values[$i] as $val) {
$r = & $array;
foreach ($keys as $key) {
if ($key == "#") { $key = $i; }
$r = & $r[$key]; // move pointer to subarray
}
$r = $val;
}
}
Creo que se van a necesitar escribir algunos bucles. –