Autor
|
Tema: Una pregunta (Leído 2,230 veces)
|
Xephiro
|
Quisiera saber, como puedo hacer para que al ingresar datos de la siguiente forma {{D11, D12, D13}, D2, D3} eso me lo pueda tomar como un arreglo De la siguiente forma: <? $Datos = "{{D11, D12, D13}, D2, D3}"; ?> Lea como Metod($Datos);Salida:
Pos 0 D1 -> D11 - D12 - D13 1 D2 -> D2 2 D3 -> D3
y con D1
D1:
Pos 0 D11 -> D11 1 D12 -> D12 2 D13 -> D13 Bueno, espero se entienda y si alguien me puede ayudar con algun metodo para poder tomar lo datos asi me encantaria
|
|
|
En línea
|
|
|
|
WHK
|
Si te entiendo pero me cuesta un poco hacerlo ya que hay muchas variantes que anteponerse, por ejemplo si {{D11, D12, D13}, {{D11, D12, D13}, D2, {{D11, D12, D13}, D2, D3}}, D3}habría que comenzar a hacer explode a todas las llaves de apertura y comenzar desde la última para asegurarnos de que vamos desde el nivel mas alto hasta el inferior e ir uniendo los resultados con las llaves restantes para comenzar a crear el array auqnue eso me complicó un poco . Ahi te dejo un poco el avance de tu función, yo me voy a dormir porque ya me dieron las 3.36am <?php if(!$datos = $_GET['datos']){ $datos = '{{D11, D12, D13}, D2, D3}fuck %&$<>();meequiboqueaaahhh!!!GGrr'; } echo metodo_hacktor($datos); echo '<br><br>'; //echo metodo_hacktor($datos, 'D1'); function metodo_hacktor($datos, $id_D = false){ /* Eliminamos el primer y último carácter asumiendo que son llaves de apertura y cierre y eliminamos los espacios en blanco, además permitimos solo los carácteres utiliozados para evitar mostrar errores al procesar el contenido. */ $datos[0] = ' '; $datos[strlen($datos) - 1] = ' '; /* if(!$datos = explode(',', $datos)){ return 'No hay datos para procesar.'; } */ // $buffer = explode('{', $datos); }else{ return 'Error de sintaxis, faltan o sobran llaves.'; } /* if($id_D){ } */ } /* Pos 0 D1 -> D11 - D12 - D13 1 D2 -> D2 2 D3 -> D3 y con D1 D1: Pos 0 D11 -> D11 1 D12 -> D12 2 D13 -> D13 */ ?>
|
|
|
En línea
|
|
|
|
Erik#
Desconectado
Mensajes: 1.138
Gundam
|
Y si utilizas arrays multidimensionales?
|
|
|
En línea
|
|
|
|
Xephiro
|
Y si utilizas arrays multidimensionales?
Lo que pasa es que quiero que eso vaya dentro de un archivo config y para el usuario a mi juicio va a ser mas entendible agrupar los datos con llaves como { } que poniendole Array(); a cada agrupacion.
|
|
|
En línea
|
|
|
|
дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
Desconectado
Mensajes: 5.110
|
$variable="dc1,dc2,dc3,gp4";
Luego la parseas con la ',' y la metes en un array.
Suerte
|
|
|
En línea
|
|
|
|
Xephiro
|
Pero, eso tambien generaria arrays de 3 o 4 dimenciones?
osea que yo pusiera
{{{D111,D112}, D12},{D21, D22},D3,D4,D5}
¿?
|
|
|
En línea
|
|
|
|
Nakp
casi es
Ex-Staff
Desconectado
Mensajes: 6.336
he vuelto :)
|
no te sale hacerlo asi? D11,D12,D13;D21,D22;D31,D32,D33 y haces 2 explodes xD uno con ; y el siguiente con ,
|
|
|
En línea
|
Ojo por ojo, y el mundo acabará ciego.
|
|
|
SaXo
Desconectado
Mensajes: 166
|
Hola,
Bueno, definir la forma correcta de manejar datos en un fichero depende bastante de cómo pueda usar el fichero ese usuario. Si por ejemplo tuviera un formulario donde el usuario introduce una serie de configuraciones para almacenarlas en un fichero optaría por usar datos serializados para almacenarlos (independientemente si va a un fichero o a base de datos). Si por ejemplo es el usuario el que confecciona el fichero para aplicar una configuración optaría por definir un patrón sencillo para evitar todos los errores que puedan derivarse. La elección de usar llaves para montar la estructura es más que probable que se produzcan muchos errores por que se olvidado de una llave o la estructura no es la correcta.
Así, a bote pronto, usaría una estructura parecida a esta. Aunque luego puede sufrir alguna variación dependiendo de las necesidades.
field_1 : a,b,c,d,e,f field_2 : d field_3 : versión 1
Ahora, existen varias formas de leer un fichero y obtener los datos de para formar las estructuras de datos adecuadas.
Voy a probar la forma en la que la suelo hacer ya que siempre me ha dado un buen resultado a la hora de manejar este tipo de ficheros.
$f = fopen('configure.cnf','r'); while ($value = fscanf($f,"%s : %s\n")) { list($clave,$valor) = $value; $arr[$clave] = explode(',',$valor); } fclose($f);
Existen otras formas de hacer esto, que no son ni mejores ni peores, y dependerán de las necesidades que tengamos en el momento para decidir usar una u otra forma.
Un saludo,
SaXo
|
|
|
En línea
|
|
|
|
|
|