Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] algorytm z dwiema tablicami
SubZero.
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 15.09.2007
Skąd: getCity();

Ostrzeżenie: (0%)
-----


Witam,

Chcę napisać algorytm, który z dwóch tabel A i B wypełnionymi stringami, wsadzi do trzeciej tablicy C wszystkie stringi, które powtarzają się w tablicy A oraz B. Narazie zadeklarowałem dwie tablice, A i B:

  1. <?php
  2. $A = Array('Joe', 'Bob', 'Sarah', 'Bill', 'Suzy');
  3. $B = Array('cos', 'pos', 'suzy', 'Bob');
  4. ?>

I teraz jak to zrobić, żeby porównać te stringi w obu tablicach i wsadzić je do tablic C?

Ten post edytował SubZero. 17.10.2008, 18:31:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


sprubuj tak: (ale nie sprawdzałem ;p)

Kod
<?php
$A = Array('Joe', 'Bob', 'Sarah', 'Bill', 'Suzy');
$B = Array('Joe', 'pos', 'suzy', 'Bob');
$lenghtA = count($A);
$lenghtB = count($B);
$C = Array();
for ($i=0; $i < $lengthA; ++$i)
{

for ($j=0; $j < $lengthB; ++$j)
{
   if ($A[$i] == $B[$j]) $C[] = $A[j];
  }
}
print_r($A);
echo ("<br>");
print_r($B);
echo ("<br>");
print_r($C);
?>

wcze śniej musisz zdefiniować zmienną tablicową C... $C = Array();
nie kozystasz z petli while() tylko for() więc bez potrzeby jeszcze wewnątrz zwiekszasz wartości - w ten sposób przeskakujesz co drugi element....
przeanalizuj zagniezdżenie tych pętli, pętla wewnetrzna zostanie wykonana wiele razy po tych samych $B podmieniając tylko raz A petlą zewnętrzną... choć napisałem ++$i to mogło być tak jak bylo $i++....
petla for() zostaje wykonana od $i=0 (czyli juz dla 0 odliczasz pierwszy przebieg), skoro argumentow a $A jest pieć to policz (0;1;2;3;4) - tak więc $i< $lengthA...

nie gwarantuję że jest dobże bo nie sprawdzałem ;p



EDIT

i jak widze jeszcze dokłądniej sprawdził nevt czy juz czasem nie ma elementu $A w tablicy $C:

($A[$i] == $B[$j]) && !in_array($A[$i], $C)

Ten post edytował zegarek84 17.10.2008, 20:24:45
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 03:15