Hola,
me explico mas claro y con código:
He conseguido crear la siquiente funcion que hace lo que yo necesito pero usando eval():
Código PHP:
public static function setIndiceAtrubuto($array,$indices)
{
$retorno=array();
$array_cad='[\''.implode("']['",$indices).'\']';
foreach($array as $key => $val)
{
$indice=eval('return $val'.$array_cad.';');
$retorno[$indice]=$array[$key];
}
return $retorno;
}
Como verás, necesito una función a la que se le pase un array, este array tiene que ser bidimensional y contiene los atributos de una consulta a la base de datos con el siguiente formato:
Código PHP:
$arr[0]["atrib1"]
$arr[0]["atrib2"]
$arr[0]["atrib3"]
$arr[1]["atrib1"]
$arr[1]["atrib2"]
$arr[1]["atrib3"]
....
$arr[n]["atrib1"]
$arr[n]["atrib2"]
$arr[n]["atrib3"]
Pasados los datos a la funcion esta tiene que devolver un array con el indice pasado como primera dimension:
EJ:
pasamos el siguiente array
Código PHP:
$arr[0]["atrib1"];
$arr[0]["atrib2"];
$arr[0]["atrib3"];
$arr[1]["atrib1"];
$arr[1]["atrib2"];
$arr[1]["atrib3"];
$arr[2]["atrib1"];
$arr[2]["atrib2"];
$arr[2]["atrib3"];
setIndiceAtrubuto($arr,array("atrib2"));
tendria que devolver:
Código PHP:
$arr["atrib1"]["atrib1"];
$arr["atrib1"]["atrib2"];
$arr["atrib1"]["atrib3"];
$arr["atrib1"]["atrib1"];
$arr["atrib1"]["atrib2"];
$arr["atrib1"]["atrib3"];
$arr["atrib1"]["atrib1"];
$arr["atrib1"]["atrib2"];
$arr["atrib1"]["atrib3"];