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)