PHP: porovnání polí [VYŘEŠENO]

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Zbynas 16. 8. 2018 09:24

Potřebuji spočítat, kolik hodnot v poli1 se shoduje s hodnotami v poli2. To jsem zvládnul.
Kód: Vybrat vše
function porovnat_str($string1,$string2){
   $por1 = explode(",",$string1);
   $por2 = explode(",",$string2);
   $shody = 0;
   for($x = 0; $x<count($por1); $x++){
      for($y = 0; $y<count($por2); $y++){
         if ($por1[$x]==$por2[$y]) $shody += 1;
      }
   }
return $shody;
}


Teď bych ale potřeboval porovnat ne jakékoliv hodnoty, ale pouze odzadu. Jako třeba když u Sportky sázíte Šanci, tak podle toho, kolik odzadu "uhodnete" čísel, tak je pak výhra.
Pokud budu mít string1 "5,6,7" a string2 "7,7,7", tak by mi měla funkce vrátit počet shodných čísel jedno. Původní funkce by mi vrátila 3.
Máte nějaký nápad, jak na to?

-- 16. 8. 2018 10:35 --

Tak jsem něco vymyslel, ale funguje to jen za předpokladu, že jsou oba řetězce stejně dlouhé. Co s tím? :) Díky :)

Kód: Vybrat vše
   
function porovnat_str2($string1,$string2){
      $por1 = explode(",",$string1); 
   $por2 = explode(",",$string2);
   $shody = 0;
   
   for($x = count($por2)-1; $x>0; $x--){     
      if ($por1[$x]==$por2[$x])
         $shody += 1;
      else
         break;
   }
return $shody;
}


-- 16. 8. 2018 10:52 --

Vyřešeno, nějak rychle dneska :D
Kód: Vybrat vše
function porovnat_str2($string1,$string2){
   $string1b = $string1; $string2b = $string2;

   if (strlen($string1)>strlen($string2))
   $string1b = substr($string1,strlen($string1)-strlen($string2),strlen($string2)); 
 
        if (strlen($string2)>strlen($string1))
   $string2b = substr($string2,strlen($string2)-strlen($string1),strlen($string1));

      $por1 = explode(",",$string1b);
   $por2 = explode(",",$string2b);
   $shody = 0;
   for($x = count($por2); $x>0; $x--){
      if ($por1[$x-1]==$por2[$x-1])
         $shody += 1;
      else
         break;
   }
return $shody;
NVidia GTX 1060 6GB, Intel Core i7-2600K @ 3,4 GHz, 16 GB DDR 3
Download 100 Mbps, Upload 100 Mbps, ping 8
VINOTÉKA U FREJKA
FREJK.CZ, FREJK.SK, FREJK.COM
Zbynas
Junior
Uživatelský avatar

Odeslat příspěvekod Just_jo 20. 8. 2018 20:13

Co takhle nevymýšlet kolo a použít rovnou funkci?
http://php.net/manual/en/function.array-intersect.php
Just_jo
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků