Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Automatyczne łączenie tablic
Forum PHP.pl > Forum > PHP
z3L
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.
scanner
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
z3L
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 : ..."
scanner
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ą.
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.