Mamy dane 2 przykładowe tablice:
Zakładamy że tablice mogą składać się nie z 4, ale nawet z kilku tysięcy elementów
( ); //$dbase = array ("[98]"=>"35", "[70]"=>"22", "[45]"=>"77", "[67]"=>"00"); ( );
1. Potrzebowałem znaleźć wszystkie klucze które występują w pierwszej tablicy ale nie występują w drugiej.
pomogła funkcja
array_diff_key($dhcp, $dbase );
wynik:
( ( [0] => 22 [1] => date2 ) ( [0] => 74 [1] => date4 ) )
2. Teraz szukam teraz sposobu który zwróci mi elementy
pierwszej tablicy takie, że klucze są identyczne z kluczami z drugiej
ale elementy o indeksie [0] są różne (elementów o indeksie [1] nie porównujemy)
czyli dla:
( [0] => 45 [1] => date1 ) ( [0] => 35 [1] => date11 )
oba klucze [98] - identyczne:
elementy tablicy: [0] => 45 oraz [0] => 35 - różne
czyli pozostawi element z pierwszej tablicy:
( ( [0] => 45 [1] => date1 ) )
(może rozwiązanie komuś się przyda)
Po poszukiwaniach znalazłem rozwiązanie w postaci funkcji: array_uintersect_assoc,
która wybiera identyczne klucze i dodatkowo pozwala porównywać
wartości tablic przy pomocy innej funkcji (u mnie to funkcja val_compare_func)
function val_compare_func($v1,$v2) { if ($v1[0]!==$v2[0]) return 0; return 1; }