Foros del Web » Programando para Internet » PHP »

Manejo de arrays

Estas en el tema de Manejo de arrays en el foro de PHP en Foros del Web. Haber si me podeis ayudar. Mi problema es que tengo 2 array, el primero de ello consta de palabras y el segundo de frases. Necesito ...
  #1 (permalink)  
Antiguo 08/03/2003, 03:21
Avatar de guembe69  
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 15 años, 11 meses
Puntos: 0
Pregunta Manejo de arrays

Haber si me podeis ayudar. Mi problema es que tengo 2 array, el primero de ello consta de palabras y el segundo de frases.
Necesito pasar a un tercer array las frases que contengan las letras que hay en el primer array. Ejemplo porque me liao hasta yo.

array1[0] = "no";
array1[1] = "cosa";
array1[2] = "que";
array2[0] = "La verdad es que soy novato en esto";
array2[1] = "que cosas pasan no";
array2[2] = "no me vacileis";
array2[3] = "que cosa, es esto de ser novato";

Resultado

array3[0] = "que cosas pasan no";
array3[1] = "que cosa, es esto de ser novato";

Creo que se entiende ¿no?, hay que tener en cuenta que no sabemos que grandes pueden ser los arrays 1 y 2. Necesitaria el codigo para PHP3.
Gracias por vuestro tiempo.
  #2 (permalink)  
Antiguo 08/03/2003, 06:11
Avatar de Neno  
Fecha de Ingreso: marzo-2003
Mensajes: 11
Antigüedad: 14 años, 9 meses
Puntos: 0
Re: Manejo de arrays

Que contengan las letras o las palabras???


Cita:
Mensaje Original por guembe69
...
Necesito pasar a un tercer array las frases que contengan las letras que hay en el primer array. Ejemplo porque me liao hasta yo.

...
  #3 (permalink)  
Antiguo 08/03/2003, 11:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. yo no te entendí nada .. tal vez dandole otro enfoque a la explicación lo entienda ..

Cita:
Necesitaria el codigo para PHP3.
Seguro que la versión de PHP q usas es PHP 3.x ? .. revisa tu versión concreta de PHP en un:
Código PHP:
<?
phpinfo
();
?>
No es lo mismo que tus scripts.php3 tengan esa extensión (o sea lo q mas has visto) .. que sea la versión de tu PHP una versión 3.x ...

Un saludo,
  #4 (permalink)  
Antiguo 09/03/2003, 06:57
Avatar de guembe69  
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 15 años, 11 meses
Puntos: 0
Aclaración ¡SORRY!

La version en realidad es la 4.3.0 (han devido actualizar el server, ya que me lo puse en navidad y la version era la 3).
Y en cuanto a lo de las letras o palabras eran en realidad son palabras, perdonad mi ignorancia.
Yo intente hacerlo con la instruccion eregi, pero no se como hacer que me lo repita tantas veces como palabras tenga en el array1.
Creo que esta claro ¿no?
Gracias

Última edición por guembe69; 09/03/2003 a las 07:04
  #5 (permalink)  
Antiguo 09/03/2003, 10:38
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 17 años, 2 meses
Puntos: 3
Hola, acá hay una idea:

Código PHP:
<?
echo "<b>manejando arrays</b> <br><br>";
$array3[0]=0;
$array1[0] = "no";
$array1[1] = "cosa";
$array1[2] = "que";
$array2[0] = "La verdad es que soy novato en esto";
$array2[1] = "que cosas pasan no";
$array2[2] = "no me vacileis";
$array2[3] = "que cosa, es esto de ser novato";

foreach (
$array1 as $registro) {
    foreach (
$array2 as $registro2) {
        if (
strstr($registro2,$registro)) {
        
array_splice($array3,-1,0,$registro2);
        }
    }
}
echo 
"<br><br><br>";
foreach (
$array3 as $registro3) {
    echo 
$registro3."<br>";
}
?>
con dos foreach recorremos ambos arrays y comparamos si hay valores iguales con strstr(), si los hay agrega un registro al array3.

Igual falta pulir varias cosas (como que los valores se repitan), y no creo que el haber usado array_splice() para agregar un registro sea lo mejor.

un saludo y suerte
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #6 (permalink)  
Antiguo 10/03/2003, 15:10
Avatar de guembe69  
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 15 años, 11 meses
Puntos: 0
No me vale

La verdad es que la solucion que me has dado no me funciona y no se como arreglarla ye que no entiendo muy bien el funcionamiento de la instruccion forearch(). Me podria dar alguien otra solucion.
Gracias
  #7 (permalink)  
Antiguo 10/03/2003, 15:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Solución no te doy .. solo te explico algo de lo que hace foreach ..

Para que lo veas sencillo foreach hace:

Lee secuencialmente uno tras otro los elementos de un array entregando a cada pasada del bucle que crea una variable con el valor de ese elemento que está leyendo y opcionalmente su indice tambien:

Ejemplos:

Código PHP:
$array=array('cero','uno','dos','tres');

foreach(
$array as $indice => $valor){
echo 
$indice." -> ".$valor."<br>";
}

// o 

foreach($array as $valor){
echo 
$valor."<br>";

Y equivalen a usar un bucle FOR (....) previo de contar (count() ) el total de elementos del array ...

Con los bucles foreach es super comodo recorrer un array de la forma tipica secuencial .. ya sea con indices numericos o alfanumericos y se indiquen o se tomen por defecto ..

Por otro lado .. Si explicas el caso real de lo que pretendes hacer (con ejemplitos de peritas y manzanas) tal vez veamos alguna forma de implementar lo que pretendes hacer .. Podría ser probable que tal cual quieres hacerlo no sea la solución correcta.


Un saludo,
  #8 (permalink)  
Antiguo 14/03/2003, 00:48
Avatar de guembe69  
Fecha de Ingreso: enero-2002
Mensajes: 19
Antigüedad: 15 años, 11 meses
Puntos: 0
Variante

Otra posible solucion seria borras las partes de l array2 que no tengan las palabras del array1, quedandonos solo con: array2[1] y array2[3].
¿Que instruccion borra partes de un array?
Gracias
  #9 (permalink)  
Antiguo 15/03/2003, 03:22
Avatar de Neno  
Fecha de Ingreso: marzo-2003
Mensajes: 11
Antigüedad: 14 años, 9 meses
Puntos: 0
<?
echo "<b>manejando arrays</b> <br><br>";
$array1[0] = "no";
$array1[1] = "cosa";
$array1[2] = "que";

$array2[0] = "La verdad es que soy novato en esto";
$array2[1] = "que cosas pasan no";
$array2[2] = "no me vacileis";
$array2[3] = "que cosa, es esto de ser novato";

foreach ($array2 as $frase) {
foreach ($array1 as $palabra) {
$patron = '/\b$palabra\b/i';
if ( preg_match($patron,$frase) ) {
$array3[] = $frase;
continue;
}
}
}

foreach ($array3 as $resultado) {
echo $resultado."<br />";
}
?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:08.