Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Automatyczne łączenie tablic, array_merge
z3L
post
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 4
Dołączył: 22.08.2006

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


Witam.

W jaki sposób mogę połączyć tablice bez podawania ich ilości ? Chodzi mi o to, że wewnątrz tablicy mam tablice o różnej ilości, chciałbym je połączyć wszystkie jednakowo.

Zrobiłem pętle, ale wtedy łączy mi 1 i ostatnią.
Kod
$var = json_decode($_POST['info']);
$cVar = count($var);

    if ($cVar>1)
    {
        for ($i=0;$i<$cVar;$i++)
        {
            $r = array_merge($var[0], $var[$i]);
        }
    }


Chodzi mi o to, by łączyło w 1 tablicę, nawet gdy są 3, 4, 5, 1000.. itd..

Pozdrawiam.


--------------------
...
Go to the top of the page
+Quote Post
scanner
post
Post #2





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Chwila zastanowienia i sam byś dotarł do tego, że w $r zawsze łączysz pierwszą tablicę i kolejną według licznika i przy każdej iteracji pętli ponawiasz to, nadpisując już uzyskany wynik.
Sensowniejszy wynik uzyskasz takim kodem (pisane z palca):
  1. <?php
  2. $var = json_decode($_POST['info']);
  3. $iVar = count($var);
  4. $aResult = array();
  5. if ( $iVar>1 ) {
  6.    for( $i=0; $i<$iVar; $i++ ) {
  7.        $aResult = array_merge( $aResult, $var[$i] );
  8.    }
  9. }
  10. ?>

Pamiętaj, że array_merge" title="Zobacz w manualu PHP" target="_manual może nadpisać Ci niektóre wartości, jeśli będą miały takie same klucze tekstowe


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
z3L
post
Post #3





Grupa: Zarejestrowani
Postów: 54
Pomógł: 4
Dołączył: 22.08.2006

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


Masz rację, doszedłem do tego, zanim napisałeś posta, ale dziękuję.

Moje drugie pytanie: jak sprawdzić, czy wszystkie elementy w tablicy są null ?

Przykładowo taka tablica:

Kod
array(2) {
  [0]=>
  object(stdClass)#2 (1) {
    ["askldassdasdas"]=>
    NULL
  }
  [1]=>
  object(stdClass)#3 (1) {
    ["daskjdhasjkhdjkasda"]=>
    NULL
  }
}


Mój kod:

Kod
    public function showWords()
    {
        $var = json_decode($_POST['info']);
        $cVar = count($var);
        
        $r = array();
        
        //Merging the array
        for ($i=0;$i<$cVar;$i++)
        {
            $r = array_merge($r, $var[$i]);
        }
        
        $crVar = count($r);
            
        for ($i=0;$i<$crVar;$i++)
        {
            foreach ($r[$i] as $aKey => $aVar)
            {
                if ($aVar != NULL)
                {
                    printf("%s == %s<br/>",$aKey, $aVar);
                }
            }
        }
    }


Chciałbym w przypadku, gdy wszystkie elementy są null, wyświetlić : Brak wyników.
A w przypadku, gdy pare elementów jest null, wyświetlić: "Nie przetlumaczone : ..."

Ten post edytował z3L 17.01.2009, 12:51:22


--------------------
...
Go to the top of the page
+Quote Post
scanner
post
Post #4





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Moim zdaniem od is_null powinieneś uzależnić merge konkretnej tablicy, po czym na końcu sprawdzić rozmiar tablicy wynikowej. Jeśli wszystkie tablice łączone były null, to w wyniku dostaniesz tablicę pustą.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 08:31