New question

Question:

Date: 30-03-2019 06:39:23 (In Spanish)

Comparación de Datos de dos arreglos[Unresolved]

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...
Tags: PHP - PHP Advanced - SQL Server Votes: 0 - Answers: 3 - Views: 13 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 01-04-2019 07:21:05 Hola colega, intentaste utilizar la función array_intersect la cual calcula la intersección de arrays?
    Dicha función retorna el siguiente array: [0] => 1, [1] => 2, [3] => 4, [6] => 7, [8] => 9, [9] => 10
    Recuerda que los arreglos se iteran desde la posición 0 (cero). Ahora bien, si lo que quieres es mantener los indices del arreglo 1 puedes utilizar algo similar:

    $arreglo3 = [];
    foreach ($arreglo1 as $key => $value) {
    $arreglo3[$key + 1] = (in_array($value, $arreglo2)) ? $value : '';
    }

    - Recorres el arreglo1
    - Si el valor del arreglo1 se encuentra en el arreglo2, guardas el valor del arreglo1 en el arreglo3, en la posición del arreglo1, aqui puedes emplear un operador ternario para guardar un valor vació y así mantener la misma longitud del arreglo1.
    - $key + 1 es opcional y lo puedes emplear para que tu arreglo 3, inicie desde 1 y asi tengas la estructura que deseas.

    Resultado:

    [1] => 1
    [2] => 2
    [3] =>
    [4] => 4
    [5] =>
    [6] =>
    [7] => 7
    [8] =>
    [9] => 9
    [10] => 10

    Espero haber sido claro!
    Saludos.
      Votes: 1 - Link answer
     
  •  
      0  
     
    Date: 02-04-2019 16:39:56 sort($a1);
    sort($a2);

    echo $a1 == $a2;

    // Print 1 si son iguales
      Votes: 0 - Link answer
     
  • Date: 09-04-2019 05:16:04 $array1 = array("a1" => 1, "a2" => 2,...);
    $array2 = array("a1" => 1, "a2" => 5,...);
    foreach($array2 as $key => $value) {
    if (isset($array1) && isset($array2) && $array2[$key] != $array1[$key]) {
    $guardar_datos_diferente_en_esta_variable .= $key." : ".$value." \n";
    }
    }
    print_r($guardar_datos_diferente_en_esta_variable);
      Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com