entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

Comparación de dos Arreglos

Hola chicos... tengo un problema que no se como resolver...

tengo dos arreglos que quiero comparar.

$arreglo1 = array($a1);
$arreglo2 = array($a2);

los dos arreglos contienen valores similares por ejemplo contiene los siguientes datos

arreglo1 
1
2
3
4
5
6
7
8
9
10
arreglo2
1
2
4
7
9
10

estoy aplicando esto para compararlos

if($arreglo1 == $arreglo2){
 echo "a1";
 echo "b2";
}else{
echo"";
}

lo hace bien hasta que el primer a1 es diferente a2 lo que imprime es lo siguiente

1 -> 1
2 -> 2

desde aqui ya no hace nada

3 -> null
...

a lo que quiero llegar

1 -> 1
2 -> 2
3
4 -> 4
5
6
7 -> 7
8
9 -> 9
10 ->10

esto funciona como ejemplo... pero aplicando a mi código que son consultas no funciona...

$arreglo1 = array(1,2,3,4,5,6,7,8,9,10);
$arreglo2 = array(1,2,4,7,9,10);

foreach($arreglo1 as $num) {
    if(in_array($num,$arreglo2)) {
        echo $num . "->" . $num . "<br>";
    } else {
        echo $num . "<br>";
    }
}

espero puedan ayudarme...

1voto

magarzon comentado

¿Qué quieres decir con que el último código no te funciona porque tu código son consultas? Por cierto, tampoco es buena solución, porque implica que el primer array siempre tenga que tener igual o más elementos que el segundo

0voto

jj19958 comentado

el arreglo guarda los datos de consultas SQL Server, y si el primer arreglo es mayor que el segundo.

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola @jj19958,

no entiendo bien el resultado que querés obtener de la operación de comparación. Tu ejemplo de:

1 -> 1
2 -> 2
3
4 -> 4
5
6
7 -> 7
8
9 -> 9
10 ->10

no es una estructura de datos...

Posiblemente la función array_diff() te sirva, pero no sé que resultado querés obtener de la operación de comparación entre los vectores...

1voto

jj19958 comentado

lo que pasa es que tengo dos consultas de diferentes tamaños...
la primera consulta tiene los Numero de empleado
y la segunda consulta tiene los números de empleados la diferencia es que se hace un filtro de asistencia y solo me arroga como resultado los que asistencia a X dia.

> ----------------------------------------------
> | N empleado |03-04-19  | Resultado esperado  |
> | 1    |  1       |   1             |  
> | 2    |  3       |   FALTA         | 
> | 3    |  4       |   3             |  
> | 4    |  5       |   4             |
> | 5    |  7       |   5         |  
> | 6    |  9       |   FALTA         | 
> | 7    |      |   7             | 
> | 8    |      |   FALTA         |
> | 9    |      |   9             |
> ----------------------------------------------
>

algo asi pero no se como solucionar cuando no existe un registro

if($arreglo1 == $arreglo2){
 echo "a1";
 echo "b2";
}else{
echo"";
}

1voto

Leonardo-Tadei comentado

Hola @jj19958,

yo te preguntaba por una estructura de datos, pero para tener una salida como la que entiendo que proponés, podés hacer esto:

<?php
$a1 = array(1,2,3,4,5,6,7,8,9,10);
$a2 = array(1,2,4,7,9,10);

foreach($a1 as $i){
    if( in_array($i, $a2)){
        $res = $i;
    } else {
        $res = 'FALTA';
    }
    print("$i | $res <br>");
}

A mi el algoritmo no me gusta demasiado porque tiene como falla que funciona solo si $a1 tiene más elementos que $a2 y si todos los elementos de $a2 están siempre en $a1, pero tal vez por el resto del problema que estás resolviendo, estas 2 condiciones sean siempre ciertas.

Saludos cordiales

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta