Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z funkcja array_diff()
Forum PHP.pl > Forum > PHP
byczek1984
Witam
Mam tablice
Kod
$tab1 = array ("$row1"); czyli 1 2 3 4 5 6 7 8 9 11
$tab2 = array ("$row2"); czyli 1 4 5 6 7 8 9
$wynik = array_diff ($tab1, $tab2);
echo $wynik;

I pokazuje mi
Kod
Array (     [0] => 1 2 3 4 5 6 7 8 9 11 )

zamiast array( [1]=>2; [2]=>3; [10]=>10;)
Prosze o pomoc.... Pozdro
wookieb
A manual?? http://php.net/array

Efekt jaki chcesz uzyskać to http://php.net/explode
Podstawy...
byczek1984
tak szukalem w manualu i tam jest wlasnie ta funkcja array_diff() do ktorej wystarczy podac tylko 2 tabele array() i ona pokazuje roznice tych 2 tabel , czyli jakie elementy tabeli 1 nie znajduje sie w tabeli 2 i wyswietla , bez zadnego dzielenia (explode) questionmark.gif
wookieb
1) Nie tabele tylko tablice
2) Naucz się tworzyć tablice
3) Taką tablicę jaka chcesz stworzysz dzieki explode
byczek1984
Tak to czemu w manualu tablice
Kod
$tablica1 = array ("zielony", "czerwony", "niebieski", "czerwony");
$tablica2 = array ("zielony", "żółty", "czerwony");
$wynik = array_diff ($tablica1, $tablica2);

print_r($wynik);

wyswietla array( [2]=>'niebieski')

i tu sie nie uzywalo zadnego 'explode' - u mnie jest taki sam przyklad tylko sa numery, i dlaczego u mnie nie trybi?
wookieb
A widzisz róznice w sposobie tworzenia tablicy? Bo ja ogromną. Twoja jest błędna
byczek1984
czemu bledna?
$row[1] wzielo sie z $row[1]=implode (' ', $number) - number czyli z wyniku zapytania
wookieb
To może najpierw wróć do podstaw bo nie mamy o czym rozmawiać. Jak ci tłumacze, że źle robisz tablice to ŹLE ją robisz. Tak trudno to przyjąc do wiadomości?

Wracaj do podstaw i zobacz dział o tablicach a POTEM przeczytaj http://php.net/explode
seth-kk
explode zwraca gotowa tablice wiec po cholere przypisujesz to do kolejnej tablicy?
byczek1984
oki to wiec zrobilem tak
Kod
$divide1=explode(' ', $tab1);
$divide2=explode(' ', $tab2);

for($i=0; $i<count($divide1)/2; $i++)
{
    // i tutaj jak moge zastosowac ta funkcje array_diff() questionmark.gif
   echo $divide1[$i];
   echo $divide2[$i];
  //wyswietla mi sie dane z tych 2 tabel ale zeby wyswietlic tylko dane ktore sa w tab1 a nie sa w tab2??
}
wookieb
No i teraz array_diff na tych dwóch tablicach tak jak miałeś wcześniej.
byczek1984
Oki to zrobilem na tych 2 tablicach i nie dziala poprawnie:
Kod
$divide1=explode(' ', $tab1);
$divide2=explode(' ', $tab2);

for($i=0; $i<count($divide1)/2; $i++)
{
    $a=array("$divide1[$i]");
    $b=array("$divide2[$i]");
      $result=array_diff($a, $b);
                    print_r($result);

Array (     [0] => 1 2 3 4 5 6 7 8 9 11 )
}

zamiast wyswietlac roznice 2 tabli to wyswietla tylko tab1. Prosze o wskazowki
wookieb
Nie wierzę w co widzę...

  1. $divide1=explode(' ', $tab1);
  2. $divide2=explode(' ', $tab2);
  3.  
  4. print_r( array_diff($divide1, $divide2));


Upewnij się tylko czy $divide* są odpowiednimi tablicami
byczek1984
Oki dzieki juz trybi, a jeszcze mam pytanie a jak by to mozna bylo zapisac w formularzy
Kod
<form action="...">
    <select name="zmienna">
        <option> //zeby tutaj pokazywalo ta roznice z tych 2 tablic? </option>
    </select>
</form>
wookieb
http://php.net/foreach
byczek1984
Oki juz mam dzieki wielkie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.