kburnik

PHP - linearna pretraga presjeka - Kristijan Burnik

Sep 2nd, 2012
79
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?
  2.  
  3. // funkcija koja vraca jedinstveni presjek dvaju 1-dim polja
  4. function presjek_vrijednosti($a,$b) {
  5.  
  6.     // jedinstvene vrijednosti spremamo u polje $c
  7.     $c = array();
  8.    
  9.     // za svaki element polja $a
  10.     foreach ($a as $ak => $av) {
  11.         // pretrazujemo polje $b da li sadrzi element s vrijednosti $av
  12.         foreach ($b as $bk => $bv) {
  13.             // ako smo prona┼íli podudaranje
  14.             if ($av === $bv) {
  15.                
  16.                 // provjerimo da li smo vec obradili taj element (ekvivalentno postizemo s in_array funkcijom)
  17.                 // (ovo mozemo i preskociti ako znamo da su polja $a i $b s jedinstvenim elementima )
  18.                 $vec_postoji = false;
  19.                 foreach ($c as $ck => $cv) {
  20.                     if ($av === $cv) {
  21.                         $vec_postoji = true;
  22.                         break;
  23.                     }
  24.                 }
  25.                
  26.                 // ako element nije vec obradjen, dodajemo ga na popis
  27.                 if (!$vec_postoji)
  28.                     $c[] = $av;
  29.                    
  30.                 // obradili smo element, ne moramo traziti dalje po polju $b
  31.                 break;
  32.             }
  33.         }
  34.     }  
  35.    
  36.     // vracamo popis elemenata
  37.     return $c;
  38.  
  39. }
  40.  
  41. // probne vrijednosti
  42. $a = array("a"=>1 , "b"=>2 , "c"=>3 , "d"=>4 , "e"=>4 , "f"=>5);
  43. $b = array("a"=>2 , "b"=>2 , "c"=>4 , "d"=>8);
  44.  
  45. print_r(presjek_vrijednosti($a,$b));
  46.  
  47. ?>
RAW Paste Data