Tag Archives: array_diff

Diferenta intre 2 siruri (array)

Sa presupunem ca aveti 2 array-uri cu nume utilizatori si doriti sa aflati:

  1. toti utilizatorii care se afla in primul array dar nu se afla in al doilea array.
  2. toti utilizatorii care se afla in al doilea array dar nu se afla in primul.

Exemplu:

1
2
3
4
5
6
<?php 
 
$user1_arr = array ('Vasile', 'Ion', 'andrei'); 
$user2_arr = array ('Ion', 'Andrei', 'Maria'); 
 
?>

Rezolvare 1

Se va folosi functia array_diff($arr1, $arr2):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php 
 
$user1_arr = array ('Vasile', 'Ion', 'andrei'); 
$user2_arr = array ('Ion', 'Andrei', 'Maria'); 
 
// Verificam diferentele pornind de la primul array . 
$user1_diff_arr = array_diff($user1_arr, $user2_arr);
 
// Rezultat 
// $user1_diff_arr = array ('Vasile', 'andrei');
// se observa ca in lista de rezultate apare 'andrei' desi nu ar trebui. Ei, array_diff() este case-sensitive, deci daca in primul array apare cu litere mici, in al doilea cu prima litera mare, se va lua in considerare ca si diferenta. 
 
// Pentru a face o diferentiere case-insensitive vom folosi functia array_udiff()
$user1_diff_arr = array_udiff($user1_arr, $user2_arr, 'strcasecmp');
 
// Rezultat
// $user1_diff_arr = array ('Vasile');
 
 
?>

Rezolvare 2

Pentru punctul 2 se va porni de la al doilea array

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php 
 
$user1_arr = array ('Vasile', 'Ion', 'andrei'); 
$user2_arr = array ('Ion', 'Andrei', 'Maria'); 
 
// Verificam diferentele pornind de la primul array . 
$user1_diff_arr = array_diff($user2_arr, $user1_arr);
 
// Rezultat 
// $user1_diff_arr = array ('Andrei', 'Maria');
 
 
// Diferentiere case-insensitive vom folosi functia array_udiff()
$user1_diff_arr = array_udiff($user2_arr, $user1_arr, 'strcasecmp');
 
// Rezultat
// $user1_diff_arr = array ('Maria');
 
 
?>

Daca aveti intrebari puteti lasa un comentariu.