Foros del Web » Programando para Internet » PHP »

Determinar si valores de array existen en otro array

Estas en el tema de Determinar si valores de array existen en otro array en el foro de PHP en Foros del Web. Hola. Tengo una confusión. No se si esto es posible. Necesito comparar el contenido de dos array para ver si los datos del primero existen ...

  #1 (permalink)  
Antiguo 09/08/2012, 07:35
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 16 años, 3 meses
Puntos: 15
Determinar si valores de array existen en otro array

Hola. Tengo una confusión. No se si esto es posible.

Necesito comparar el contenido de dos array para ver si los datos del primero existen en el segundo.

Esto es lo que tengo, pero no funciona. Aqui $ciudades es el primer array y $archivo2 es el segundo.

Código PHP:
Ver original
  1. foreach ($ciudades as $id) {
  2.     if ($id == $archivo2) {
  3.         $existe = true;
  4.     }
  5. }
  6. if ($existe == true) {
  7.     echo "El id $buscar si existe en el array!";
  8. }

Por favor no entiendo y no se si puedo hacer esto ????
__________________
Caminando con el corazón partío
  #2 (permalink)  
Antiguo 09/08/2012, 07:37
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años, 6 meses
Puntos: 26
Respuesta: Determinar si valores de array existen en otro array

http://pa2.php.net/manual/es/function.array-search.php

usa un foreach en tu primer array, y aplica array_serch..
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}
  #3 (permalink)  
Antiguo 09/08/2012, 09:01
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 16 años, 3 meses
Puntos: 15
Respuesta: Determinar si valores de array existen en otro array

Gracias KsrZ. Las estuve viendo pero no entendi mucho (por mi poco conocimiento de ingles y falta de comprensión de la función en general). Por ejemplo esta:

Código PHP:
Ver original
  1. function recursiveArraySearchAll($haystack, $needle, $index = null)
  2. {
  3.     $aIt     = new RecursiveArrayIterator($haystack);
  4.     $it    = new RecursiveIteratorIterator($aIt);
  5.     $resultkeys;
  6.                        
  7.     while($it->valid()) {      
  8.     if (((isset($index) AND ($it->key() == $index)) OR (!isset($index))) AND (strpos($it->current(), $needle)!==false)) { //$it->current() == $needle
  9.     $resultkeys[]=$aIt->key(); //return $aIt->key();
  10.     }
  11.                            
  12.     $it->next();
  13.     }
  14.     return $resultkeys;  // return all finding in an array
  15.                        
  16. } ;
  17.  
  18. print_r(recursiveArraySearchAll($ciudades ,$archivo2,'[COLOR="Red"][B]your-array-index-to-search'[/B][/COLOR]) );

aqui 'your-array-index-to-search' no se que va

ni siquiera se si me sirve.

De verdad quiero aprender pero como si no entiendo ni papa
__________________
Caminando con el corazón partío
  #4 (permalink)  
Antiguo 09/08/2012, 09:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Determinar si valores de array existen en otro array

Cita:
Iniciado por kimmy Ver Mensaje
aqui 'your-array-index-to-search' no se que va

ni siquiera se si me sirve.
Eso lo puedes interpretar como "el valor/clave que estás buscando".

Cita:
De verdad quiero aprender pero como si no entiendo ni papa
Pues claro, pero entonces también aprende inglés, no todo está en español compañero.

Además puedes usar Google Translate así que es muy mala tu excusa.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 09/08/2012, 09:17
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 16 años, 3 meses
Puntos: 15
Respuesta: Determinar si valores de array existen en otro array

gracias pateke. Creo que no me sirve esta función porque no estoy buscando ninguna clave/valor. Solo quiero saber si lo que viene en el array1 existe en el array2

pateke, soy compañera :)

Por favor que alguien me ayude a saber como determinar "Si lo que viene en el array1 existe en el array2"

Gracias
__________________
Caminando con el corazón partío
  #6 (permalink)  
Antiguo 09/08/2012, 09:23
 
Fecha de Ingreso: agosto-2012
Ubicación: Santiago
Mensajes: 124
Antigüedad: 12 años, 3 meses
Puntos: 60
Respuesta: Determinar si valores de array existen en otro array

Puedes usar un array_search(). Recorres un array y después compruebas si cada valor existe en el otro array.
__________________
~~Aprendiendo.
Become a Programmer, Moth*rf*cker
  #7 (permalink)  
Antiguo 09/08/2012, 10:53
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años, 6 meses
Puntos: 26
Respuesta: Determinar si valores de array existen en otro array

lo haces de esta forma,
Código PHP:
foreach($array1 as $valor){ //recorremos el array1 valor por valor
 
if(array_serch($valor,$array2) !== false){ //y le preguntamos: esta el valor en el que estamos posicionados actualmente, en el array 2?
    
echo "si esta! " $valor ;
   }
 else echo 
"no esta .." $valor;

Cita:
Iniciado por pateketrueke Ver Mensaje
Eso lo puedes interpretar como "el valor/clave que estás buscando".



Pues claro, pero entonces también aprende inglés, no todo está en español compañero.

Además puedes usar Google Translate así que es muy mala tu excusa.
php.net esta en español, solo tiene que prestarle atencion a los ejemplos
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}
  #8 (permalink)  
Antiguo 09/08/2012, 12:02
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 16 años, 3 meses
Puntos: 15
Respuesta: Determinar si valores de array existen en otro array

Gracias KsrZ. Lo coloqué asi:

Código PHP:
Ver original
  1. foreach($ciudades as $valor){ //recorremos el array1 valor por valor
  2.  if(array_search($valor, $vector) !== false){ //y le preguntamos: esta el valor en el que estamos posicionados actualmente, en el array 2?
  3.  
  4.     echo "si esta! " . $valor ;
  5.    }
  6.  else {
  7.      echo "no esta .." . $valor;
  8.  }  
  9. }

pero me da siempre que no está el valor y en los valores del array si coincide uno. Es decir, debería mostrar un mensaje cuando si está y uno cuando no está pero creo que con el if elige solo una de las dos aun cuando se cumple en las 2.

Como se puede solucionar esto????
__________________
Caminando con el corazón partío
  #9 (permalink)  
Antiguo 09/08/2012, 13:06
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años, 6 meses
Puntos: 26
Respuesta: Determinar si valores de array existen en otro array

chequea como trabaja este script: (php 5.4) funcionando..
Código PHP:
<html><body>
<?php
error_reporting
('ALL'); //reportamos todos los errores que puedan haber...
$array1 = ['hola','mundo']; // mi array 1
$array2 = ['mundo','holasss']; // mi array 2

foreach($array1 as $valor){ //recorremos el array1 valor por valor
// y le asignamos el "valor" actual a $valor

//preguntamos: esta el valor en el que estamos posicionados actualmente, en el array 2?
        
if(array_search($valor$array2) !== false){
            echo 
"si esta! " $valor " <br />";
           }
        else {
            echo 
"no esta.. " $valor " <br />";
        }

    
//pasamos al siguiente valor, si existe
    
}
?>
</body></html>
como estas empleándolo? que trae tu array?
podrias fijarte quiza con
print_r($tu_array1);
print_r($tu_array2);
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}

Última edición por KsrZ; 09/08/2012 a las 13:13
  #10 (permalink)  
Antiguo 09/08/2012, 17:25
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 16 años, 3 meses
Puntos: 15
Respuesta: Determinar si valores de array existen en otro array

KsrZ, tu código funciona perfectamente.

El problema es mi primer array que está malo. Lo hago asi:

Código PHP:
Ver original
  1. $query2 = "SELECT id_posada, ciudad FROM posadas WHERE ciudad='$ciudad2'";
  2. // enviamos la consulta a MySQL
  3. $queEmp2 = mysql_query($query2, $conn) or die(mysql_error());
  4.  
  5. while ($fila=mysql_fetch_assoc($queEmp2))
  6.       {
  7.             $ciudades[] = $fila['id_posada'];
  8.       }

y me arroja lo siguiente:

array(2) { [0]=> string(1) "1" [1]=> string(1) "5" }

array(2) { [0]=> string(1) "1" [1]=> string(1) "5" }

array(2) { [0]=> string(1) "1" [1]=> string(1) "5" }

es decir está malo.

Cómo puedo hacer para que me muestre el array correctamente

Disculpen pero esto me enreda mucho
__________________
Caminando con el corazón partío
  #11 (permalink)  
Antiguo 09/08/2012, 17:30
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Determinar si valores de array existen en otro array

Quieres que sea array asociativo?, cuál sería el índice?

Por ejemplo, podrías usar como índice la posada y como valor la ciudad:

$ciudades[id_posada] = ciudad_por_id_o_por_nombre

Sin saber más de lo que quieres hacer es difícil sugerir algo.
__________________
- León, Guanajuato
- GV-Foto
  #12 (permalink)  
Antiguo 09/08/2012, 17:37
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 16 años, 3 meses
Puntos: 15
Respuesta: Determinar si valores de array existen en otro array

Hola Triby, el segundo array (con el que debo comparar el primero) arroja esto:

array(1) { [0]=> string(1) "1" }

array(1) { [0]=> string(1) "2" }

array(1) { [0]=> string(1) "5" }
__________________
Caminando con el corazón partío
  #13 (permalink)  
Antiguo 09/08/2012, 18:09
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Determinar si valores de array existen en otro array

Entonces, dentro del for sólo verifica si existe el elemento en el otro array:

Código PHP:
Ver original
  1. foreach($array1 as $val1) {
  2.     if(in_array($val1, $array2)) {
  3.            // El elemento de array1 existe en array2
  4.     }
  5. }
__________________
- León, Guanajuato
- GV-Foto
  #14 (permalink)  
Antiguo 09/08/2012, 21:46
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 16 años, 3 meses
Puntos: 15
Respuesta: Determinar si valores de array existen en otro array

La verdad es que soy muy burra para esto. No logro capturar el primer array para comparar con el segundo. En el primer array debo almacenar la consulta que se hizo a mysql. Lo hago asi y no sirve:

Código PHP:
Ver original
  1. $query2 = "SELECT id_posada, id_foto, ciudad FROM posadas WHERE ciudad='$ciudad2'";
  2.       $res = mysql_query ($query2);//lanzo la consulta
  3.             $campos = array();//hago el array
  4.             while ($camps = mysql_fetch_array($res)){
  5.                 $campos[$camps['id_posada']] = $camps['id_posada'];//asigno los valores del idcampo como clave y el campo1 como valor
  6.             }

Disculpen tanta ignorancia y fastidio de mi parte pero de verdad no se como hacer para que me guarde en el array y pueda compararlo con el otro.

Gracias por su ayuda y paciencia

Entonces cuando le hago var_dump($campos) me sale:

array(2) { [1]=> string(1) "1" [5]=> string(1) "5" }

array(2) { [1]=> string(1) "1" [5]=> string(1) "5" }

array(2) { [1]=> string(1) "1" [5]=> string(1) "5" }

es decir repite y solo. Debería mostrar el id 1 y 5 que son los que se obtienen de la consulta
__________________
Caminando con el corazón partío
  #15 (permalink)  
Antiguo 10/08/2012, 02:14
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Determinar si valores de array existen en otro array

No, la primera sugerencia fue sin saber exactamente lo que querías... bueno, todavía no lo sé, pero ahora parece más claro:

$query2 = "SELECT id_posada, ciudad FROM posadas WHERE ciudad='$ciudad2'";

Si estás buscando sólo en una ciudad, no tiene sentido que sea un array asociativo, porque siempre será la misma ciudad, entonces ahí regresamos a tu primer planteamiento:

Código PHP:
Ver original
  1. $query2 = "SELECT id_posada, id_foto, ciudad FROM posadas WHERE ciudad='$ciudad2'";
  2.      $res = mysql_query ($query2);//lanzo la consulta
  3.      $campos = array();//hago el array
  4.      while ($camps = mysql_fetch_array($res)){
  5.               $campos[] = $camps['id_posada']; // sólo conservas la ID
  6.      }

Lógicamente, el otro arreglo debes cargarlo de la misma forma, seguramente con otros datos, filtros, tabla o lo que sea, para después recorrer uno de los dos y hacer la comparación con in_array(), como te sugiero en el mensaje anterior.
__________________
- León, Guanajuato
- GV-Foto
  #16 (permalink)  
Antiguo 10/08/2012, 07:45
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 16 años, 3 meses
Puntos: 15
Respuesta: Determinar si valores de array existen en otro array

Hola Triby muchas gracias por tu tiempo y paciencia.

Lo que me indicaste en el post anterior si lo se hacer. Lo que no logro hacer es que sirva la comparacion pues aun cuando están los datos me dice que no estan. Este es el código y los arrays:

Código PHP:
Ver original
  1. $ciudad2 = $_GET['destino'];
  2.  
  3. $query = "SELECT * FROM destinos";
  4. $queEmp = mysql_query($query, $conn) or die(mysql_error());
  5.  
  6. $query2 = "SELECT id_posada, id_foto, ciudad FROM posadas WHERE ciudad='$ciudad2'";
  7.          $res = mysql_query ($query2);//lanzo la consulta
  8.          $campos = array();//hago el array
  9.          while ($camps = mysql_fetch_array($res)){
  10.                   $campos[] = $camps['id_posada']; // sólo conservas la ID
  11.          }
  12.  
  13.     echo $_GET['destino']. '<br>';
  14.        
  15.             $ciudad = addslashes($_GET['destino']);
  16.            
  17.          
  18.            
  19.         if(isset($_GET['destino'])) {
  20.          $sqlBuscar = mysql_query("SELECT *
  21.             FROM posadas
  22.             WHERE
  23.             ciudad LIKE '%$ciudad%'", $conn);
  24.             }
  25.            
  26.  
  27.     // Configuraciones
  28.     $variable = 1;//seteamos a 0 el sumador
  29.     $valor = 3;//seteamos a 4 las imagenes a mostrar por cada linea
  30.     $directorio = opendir("admin/posadas/images/principal/");
  31.     echo
  32.     "<table>\n
  33.     <tr>\n";
  34.  
  35.         while (false !== ($archivo = readdir($directorio))) {
  36.         $nombreArch = str_replace("", "Atras", ucwords($archivo));
  37.             if (strpos($archivo, '.gif',1) || strpos($archivo, '.jpg',1) || strpos($archivo, '.png',1) || strpos($archivo, '.bmp',1)) {
  38.                 if($variable > $valor){
  39.                     echo "<tr>\n";
  40.                 }
  41.         $archi = pathinfo($archivo);
  42.         $sinExtension = str_replace('.'.$archi['extension'],'',$archivo);
  43.             $archivo2 = substr($sinExtension, -1);
  44.  
  45.          }
  46.     }
  47. foreach($campos as $valor){ //recorremos el array1 valor por valor
  48.  if(array_search($valor, $archivo2) !== false){ //y le preguntamos: esta el valor en el que estamos posicionados actualmente, en el array 2?
  49.  
  50.     echo "si esta! " . $valor .'<br>';
  51.    }
  52.    
  53.  else {
  54.      echo "no esta .." . $valor . '<br>';
  55.  }
  56. }

en $campos vienen 1 y 5
en $archivo2 vienen 1, 2 y 5

es decir coincide el 1 y el 5

pero me da como mensaje

no esta ..1
no esta ..5

que pasa aqui???
__________________
Caminando con el corazón partío
  #17 (permalink)  
Antiguo 10/08/2012, 10:04
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 14 años, 2 meses
Puntos: 91
Respuesta: Determinar si valores de array existen en otro array

Una solución más rápida tambié es viendo que la intersección de los 2 arrays sea igual al array menor =)

Código PHP:
Ver original
  1. if(count(array_intersect($array1, $array2)) == count($array1)){
  2.  //$array1 está contenido completamente en $array2
  3. }

saludos.
__________________
Utilice el Highlight para mostrar código, mis ojos se lo agradecerán :)
qué es esto? :O -> http://i48.tinypic.com/5x3kzs.png
Ya sabes :)
  #18 (permalink)  
Antiguo 10/08/2012, 10:51
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Determinar si valores de array existen en otro array

Muy raro que obtengas falso donde sí coincide.

Desconozco la función array_search(), pero, tratándose de dos arreglos unidimensionales y no asociativos, supongo que iría mejor con in_array()

Por otra parte, me parece que la variable $archivo2 la estás sobreescribiendo con $archivo2 = substr($sinExtension, -1); o, si no es la intención, entonces está mal usada en la comparación.
__________________
- León, Guanajuato
- GV-Foto
  #19 (permalink)  
Antiguo 10/08/2012, 16:27
 
Fecha de Ingreso: agosto-2012
Ubicación: En algún lugar de México
Mensajes: 41
Antigüedad: 12 años, 3 meses
Puntos: 16
Información Respuesta: Determinar si valores de array existen en otro array

ya encontrastes la solución men?, t puedo dar una
  #20 (permalink)  
Antiguo 10/08/2012, 19:47
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 16 años, 3 meses
Puntos: 15
Respuesta: Determinar si valores de array existen en otro array

kale no la he encontrado. Cuál es tu solución??? Gracias.
__________________
Caminando con el corazón partío
  #21 (permalink)  
Antiguo 11/08/2012, 10:48
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años, 6 meses
Puntos: 26
Respuesta: Determinar si valores de array existen en otro array

Cita:
Iniciado por kimmy Ver Mensaje
kale no la he encontrado. Cuál es tu solución??? Gracias.
kimmy, el array que estas obteniendo no te esta dando los resultados que buscas si no te va bien con array_serch..
quizá no los estas buscando adecuadamente, o bien no se cargan como esperas.
como te mostré en mi ejemplo, funciona, sin importar su key (clave del valor)
te recomiendo que agas un print_r para saber que traen tus arrays
http://php.net/manual/es/function.print-r.php

otra cosa.. $archivo2 = substr($sinExtension, -1);
que haces con eso? si el punto y la extencion la quitas cuando haces str_replace()
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}

Última edición por KsrZ; 11/08/2012 a las 11:46
  #22 (permalink)  
Antiguo 11/08/2012, 13:39
 
Fecha de Ingreso: agosto-2012
Ubicación: En algún lugar de México
Mensajes: 41
Antigüedad: 12 años, 3 meses
Puntos: 16
Respuesta: Determinar si valores de array existen en otro array

Hola kimmy, t explico, la forma de ver si los elementos de un arreglo, existen en otro, seria de la siguiente forma:

Código PHP:
//Arreglo 1
$temas=array("INFORMATICA","FISICA","QUIMICA","ALGEBRA");
//Arreglo 2
$temasImpartidos=array("QUIMICA","BIOLOGIA","ALGEBRA");

//Arreglo 3 -- Servirá para almacenar los elementos encontrados
$encontrado=array();
//Arreglo 4 -- Servirá para alamcenar los elementos no encontrados
$noEncontrado=array();

//Ahora vamos a ver que elementos que aparecen en $temas se encuentran en $temasImpartidos

foreach($temas as $tema){
    if (
in_array($tema,$temasImpartidos))
         
$encontrado[]=$tema;
    else
    
$noEncontrado[]=$tema;
}

//Lo que nos queda sería un arreglo como este
// $encontrado=("QUIMICA","ALGEBRA")
print_r($encontrado);
echo 
"<br>";
print_r($noEncontrado); 
Con esto tendrias los elementos que si y no se encuntren en el array $temas, y si quieres verificar q efectivamente todos esten, puedes utilizar la función count como:

Código PHP:
   if (count($temas) == count($encontrado))
        echo 
"todos los elementos en $temas estan en $encontrado"
Esta es una manera sencilla de hacer esto, aunque se puede abreviar mas. Espero q te sirva
  #23 (permalink)  
Antiguo 11/08/2012, 13:57
Avatar de fishdesign  
Fecha de Ingreso: abril-2011
Ubicación: Málaga
Mensajes: 389
Antigüedad: 13 años, 7 meses
Puntos: 95
Respuesta: Determinar si valores de array existen en otro array

Cita:
Iniciado por kale86 Ver Mensaje
Con esto tendrias los elementos que si y no se encuntren en el array $temas, y si quieres verificar q efectivamente todos esten, puedes utilizar la función count como:

Código PHP:
   if (count($temas) == count($encontrado))
        echo 
"todos los elementos en $temas estan en $encontrado"
Esta es una manera sencilla de hacer esto, aunque se puede abreviar mas. Espero q te sirva
Count te devolverá el número de indices de un array, pero en ningún momento sabrás si ambos arrays tienen los mismos valores independientemente tengan (o no) los mismos indices.

Por cierto, PHP ya dispone de una función para comparar arrays: http://www.php.net/manual/es/function.array-diff.php
__________________
Web Designer.
Themes-Up!, próximamente

Última edición por fishdesign; 11/08/2012 a las 14:02
  #24 (permalink)  
Antiguo 11/08/2012, 14:35
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años, 6 meses
Puntos: 26
Respuesta: Determinar si valores de array existen en otro array

@kale86 mensaje #9 y #21
también lee los demás.. y dinos cual es la diferencia de lo que le explicamos ya, y lo que le explicas? XD..
cual es la utilidad de count($temas) == count($encontrado) ?
@fishdesign ya le dijeron de esa función diff, pero no puede aplicarla dado que es una versión mas vieja de php. lee arriba >.<
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}
  #25 (permalink)  
Antiguo 11/08/2012, 14:37
 
Fecha de Ingreso: agosto-2012
Ubicación: En algún lugar de México
Mensajes: 41
Antigüedad: 12 años, 3 meses
Puntos: 16
Respuesta: Determinar si valores de array existen en otro array

a ver men, ¡ya checastes bien el ejmplo!?. Ahy explico claramente como obtengo dos arreglos que corresponden 1) A los elementos de un arreglo que existen en otro arreglo y 2) A los elementos de un arreglo que no existen en otro arreglo.

La suma de estos dos arreglos nos da como resultado el arreglo $temasImpartidos.

Sin embargo, el arreglo $encontrado, va a almacenar los elementos que estan en el arreglo $temasImpartidos y a su vez en $temas.

hasta ahy claro men?

bueno, lo del uso de la función count es para determinar que el número de elementos que se encuentran en el arreglo $temas (array principal), sean exactamente el mismo número de elementos que se encuentran en el arreglo $encontrado;

Si no es el mismo número de elementos y si tenemos elementos en el arreglo $encontrado se resume q efectivamente hay elementos en el arreglo $temasImpartidos que se encuentran en $temas, pero aun asi no estan todos.
  #26 (permalink)  
Antiguo 11/08/2012, 14:43
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años, 6 meses
Puntos: 26
Respuesta: Determinar si valores de array existen en otro array

@kimmy seria bueno que dijeras, como dije en el mensaje #21.. que haces con
$archivo2 = substr($sinExtension, -1);

con esto respondes tu pregunta de el mensaje #16
"que pasa aqui???"
te devuelve la ultima letra del "texto" que remplazas con $sinExtension
mira http://www.php.net/substr

en cuanto al código que te envié antes, le corrijo algo, si es que te es mas util asi:

ahora chequeara que todos los valores de el array1, esten en el array 2, si o si, sino se saldra del foreach, y dara falso en "$todos"

Código PHP:
foreach($array1 as $valor){ //recorremos el array1 valor por valor
// y le asignamos el "valor" actual a $valor

$todo true;
//preguntamos: esta el valor en el que estamos posicionados actualmente, en el array 2?
        
if(array_search($valor$array2) !== false){
           continue; 
//continua leyendo
           
}
        else {
            echo 
"no esta.. " $valor " <br />"//imprime el primer valor que fallo
            
$todo false;//reasigna $todo a falso, ya que fallo
            
break;//salimos del bucle
        
}
    }
// ahora utilizamos la variable $todo
if($todo){
   
//hacemos algo si están todas..?
   
echo "están todas.. hagamos algo!";

@kale86 si, pero lo preguntaba porque no entendía la referencia al problema de kimmy
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}

Última edición por KsrZ; 11/08/2012 a las 15:01
  #27 (permalink)  
Antiguo 15/08/2012, 08:02
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 16 años, 3 meses
Puntos: 15
Respuesta: Determinar si valores de array existen en otro array

Lo que trato de hacer con este código es una busqueda a través de una palabra para que me muestre unas fotos guardadas en un directorio .

http://vamonosdevacaciones.com.ve/bu...tino=Higuerote

Para ello busco las fotos del directorio y les quito algunos valores para que al final me quede el id y poder compararlos con el id_posada.

Código PHP:
Ver original
  1. $query2 = "SELECT id_posada, id_foto, ciudad FROM posadas WHERE ciudad='$ciudad2'";
  2.          $res = mysql_query ($query2);//lanzo la consulta
  3.          $campos = array();//hago el array
  4.          while ($camps = mysql_fetch_array($res)){
  5.                   $campos[] = $camps['id_posada']; // sólo conservas la ID
  6.          }
  7.  
  8.     echo $_GET['destino']. '<br>';
  9.         // varificamos que el formulario ha sido enviado
  10.             $ciudad = addslashes($_GET['destino']);
  11.        
  12.          
  13.         if(isset($_GET['destino'])) {
  14.          $sqlBuscar = mysql_query("SELECT *
  15.             FROM posadas
  16.             WHERE
  17.             ciudad LIKE '%$ciudad%'", $conn);
  18.             }
  19.            
  20.        
  21.     // Configuraciones
  22.     $variable = 1;//seteamos a 0 el sumador
  23.     $valor = 3;//seteamos a 4 las imagenes a mostrar por cada linea
  24.     $directorio = opendir("xxxx/xxxx/images/principal");
  25.     echo
  26.     "<table>\n
  27.     <tr>\n";
  28.  
  29.         while (false !== ($archivo = readdir($directorio))) {
  30.         $nombreArch = str_replace("", "Atras", ucwords($archivo));
  31.             if (strpos($archivo, '.gif',1) || strpos($archivo, '.jpg',1) || strpos($archivo, '.png',1) || strpos($archivo, '.bmp',1)) {
  32.                 if($variable > $valor){
  33.                     echo "<tr>\n";
  34.                 }
  35.         $archi = pathinfo($archivo);
  36.         $sinExtension = str_replace('.'.$archi['extension'],'',$archivo);
  37.    
  38.     $archivo2[] = substr($sinExtension, -1);
  39.  
  40. error_reporting('ALL'); //reportamos todos los errores que puedan haber...
  41. foreach($campos as $valor){ //recorremos el array1 valor por valor
  42.  if(in_array($valor, $archivo2) !== false){ //y le preguntamos: esta el valor en el que estamos posicionados actualmente, en el array 2?
  43.  
  44.     echo "si esta! " . $valor .'<br>';
  45.       }
  46.     else {
  47.      echo "no esta .." . $valor . '<br>';
  48.     }
  49. }
  50. echo '</table>';

Pero ahora no se como mostrar las fotos según esta busqueda. Cuando las muestro en general lo hago asi:

Código PHP:
Ver original
  1. $variable = 1;//seteamos a 0 el sumador
  2.     $valor = 3;//seteamos a 4 las imagenes a mostrar por cada linea
  3.     $directorio = opendir("xxxx/xxxx/images/principal/");
  4.     echo
  5.     "<table>\n
  6.     <tr>\n";
  7.  
  8.         while (false !== ($archivo = readdir($directorio))) {
  9.         $nombreArch = str_replace("", "Atras", ucwords($archivo));
  10.             if (strpos($archivo, '.gif',1) || strpos($archivo, '.jpg',1) || strpos($archivo, '.png',1) || strpos($archivo, '.bmp',1)) {
  11.                 if($variable > $valor){
  12.                     echo "<tr>\n";
  13.                 }
  14.         $archi = pathinfo($archivo);
  15.         $sinExtension = str_replace('.'.$archi['extension'],'',$archivo);
  16.    
  17.                 echo "
  18.                 <td class='posada'>\n<a href='posada/ver_posada2.php?codigo=$sinExtension'>";
  19.                 echo "
  20.                 <img src='xxxx/xxxx/images/principal/$archivo' width='170' height='170' border='0'>\n";
  21.                     echo "";
  22.                     echo "<td>$nombre_posada</td>";
  23.                     echo "<td></td>";
  24.                     echo "<td></td>";
  25.                    
  26.         if($variable >= $valor){// si es mayor o igual añadimos </TR>
  27.             echo "</tr>";
  28.            
  29.             $variable = 0;//seteamos a 0 el sumador y volvemos a empezar si quedan mas imagenes
  30.         }//end if
  31.         $variable++;//empezamos a sumar +1
  32.     }
  33. }//end while
  34.         closedir($directorio);
  35.         echo "</table>\n";

Estoy confundida ahora.

Cómo puedo hacer esto

Gracias.
__________________
Caminando con el corazón partío
  #28 (permalink)  
Antiguo 15/08/2012, 10:15
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años, 6 meses
Puntos: 26
Respuesta: Determinar si valores de array existen en otro array

Tan solo dime, que función cumple esto.. $archivo2[] = substr($sinExtension, -1);
en tu código
http://www.php.net/substr


http://php.net/manual/en/function.readdir.php
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}

Última edición por KsrZ; 15/08/2012 a las 10:22
  #29 (permalink)  
Antiguo 15/08/2012, 10:31
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 9 meses
Puntos: 155
Respuesta: Determinar si valores de array existen en otro array

Cita:
Iniciado por KsrZ Ver Mensaje
Tan solo dime, que función cumple esto.. $archivo2[] = substr($sinExtension, -1);
en tu código
http://www.php.net/substr


http://php.net/manual/en/function.readdir.php
según entiendo es guardar todos los archivos sin su extensión en el arreglo $archivo2, lo que no capto es que según yo esto debería funcionar


Código PHP:
foreach($campos as $valor){ //recorremos el array1 valor por valor
 
if(in_array($valor$archivo2) !== false){ //y le preguntamos: esta el valor en el que estamos posicionados actualmente, en el array 2?
 
    
echo "si esta! " $valor .'<br>';
      }
    else {
     echo 
"no esta .." $valor '<br>';
    }

o que es lo que no funciona?
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #30 (permalink)  
Antiguo 15/08/2012, 10:32
Avatar de KsrZ  
Fecha de Ingreso: abril-2011
Ubicación: /home/KsrZ/Desktop
Mensajes: 156
Antigüedad: 13 años, 6 meses
Puntos: 26
Respuesta: Determinar si valores de array existen en otro array

$nombreArch = str_replace("", "Atras", ucwords($archivo)); // chekea esto tambien ..
// remplazas "" con "Atras", aunque no lo uses.. entiendo <<--- edito
__________________
for (var i = 0; i < 2; i++){
i = !confirm("Trata a tu código como a ti mismo.. este te esta representando.. no te dejes mal parado")? 0 : i;
}

Etiquetas: determinar
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 09:41.