Tablice
14 July 2008
Comments
Poznaliśmy już tablice, a teraz zaznajomimy się z niektórymi ich możliwościami. Na początku tworzenie tablic:
<?php
// Tworzenie tablicy przez przypisanie
$tab[] = 'anna';
$tab[] = 'kasia';
$tab[] = 'coś';
$tab[] = 4;
// Tworzenie tablicy przez przypisanie z podaniem indeksów
$tab2[1] = 'anna';
$tab2[2] = 'kasia';
$tab2[3] = 'coś';
$tab2[12] = 4;
// Tworzenie tablicy za pomocą funkcji array
$tab3 = array('raz', 'dwa', 3);
<?php
// rekurencyjne drukowanie tablicy, stosowane głownie do sprawdzania tablic itp.
echo '<pre>';
print_r($tab);
print_r($tab3);
echo '</pre><br />';
// sposób 2 - foreach
foreach ($tab2 as $element)
{
echo $element.', ';
}
// nie trzeba drukować całej tablicy by mieć jeden z jej elementów
echo '<br /><br />';
echo 'Pierwszy element tablicy tab to:'. $tab[0];
<?php
foreach ($tab3 as $klucz => $wartosc)
{
echo $wartosc.', ';
}
Tablice asocjacyjne różnią się tym od zwykłych tablic tym że indeks nie jest liczbą lecz łańcuchem. Tablicę asocjacyjną tworzymy i czytamy tak:
<?php
// tworzymy tablicę asocjacyjną
$tablica = array("imie" => "Andrzej", "nazwisko" => "Lepper", "opalenizna" => "silna");
// Wyświetlamy
foreach ($tablica as $klucz => $dana)
{
echo 'Klucz to <b>'.$klucz.'</b> a jego wartość to <b>'.$dana.'</b>';
}
// wcześniejsze metody też działają
echo '<br /><br /><pre>';
print_r($tablica);
echo '</pre><br />';
echo $tablica['opalenizna'];
Na tablicach można też operować innymi funkcjami:
- array_flip($tablica) - zmienia miejscami klucze i wartości
- array_pop($tablica) - zwraca i usuwa ostatni element tablicy
- array_push($tablica, $wartosc) - dołącza nową wartość do tablicy
- array_reverse($tablica) - odwraca tablicę
- array_shift($tablica) - zwraca pierwszy element z tablicy i usuwa go
- array_sum($tablica) - zwraca sumę elementów tablicy
- array_unique($tablica) - usuwa duplikaty z tablicy
- array_values($tablica) - zwraca wartości tablicy
- asort($tablica) - sortuje tablicę rosnąco
- sort($tablica) - sortuje tablicę malejąco
- rsort($tablica) - sortuje tablicę asocjacyjną malejąco
- arsort($tablica) - sortuje tablicę asocjacyjną rosnąco
- count($tablica) - zwraca ilość elementów tablicy
- arrat_merge($tablica1, $tablica2) - łączy tablice
- in_array($wartość, $tablica) - zwraca wartość prawda gdy podana wartość jest w tablicy
<?php
$tab[] = 'anna';
$tab[] = 'kasia';
$tab[] = 'jurek';
$tab[] = 'jurek';
$tab[] = 'beata';
echo '<h1>Tablica początkowa</h1>';
foreach ($tab as $value)
{
echo $value.', ';
}
echo '<br /><br />Asort wykonane na tablicy';
asort($tab);
foreach ($tab as $value)
{
echo $value.', ';
}
echo '<br /><br />Array_unique wykonane na tablicy';
$tab = array_unique($tab);
foreach ($tab as $value)
{
echo $value.', ';
}
echo '<br /><br />in_array';
IF (in_array('Zbyszek', $tab))
{
echo 'Zbyszek jest w tablicy';
}
else
{
echo 'Zbyszka nie ma w tablicy';
}
Wykonywanie funkcji na elementach tablicy
Do tego celu służy array_map a działa w ten sposób:<?php
$tab = array('ola', 'kasia', 'jurek');
function glupiafunkcja($tekst)
{
$tekst = strtoupper($tekst);
$tekst = strrev($tekst);
return $tekst;
}
$tab = array_map("glupiafunkcja", $tab);
//array_map("NAZWA FUNKCJI", $tablica)
print_r($tab);
echo '<br />';
$tab2 = array('ola', 'kasia', 'jurek');
$tab2 = array_map("strtoupper", $tab2);
print_r($tab2);
Badanie różnic pomiędzy tablicami
<?php
$tab = array('ola', 'kasia', 'jurek');
$tab2 = array('ola', 'kasia', 'boczek');
$tablica = array_diff($tab, $tab2);
print_r($tablica);
Zliczanie powtórzeń wartości w tablicy
<?php
$ar = array('pies', 'pies', 'pies', 'pies', 'kot', 'pies', 'pies', 'pies', 'pies', 'pies', 'kot', 'ryba');
echo '<pre>';
print_r(array_count_values($ar));
?>
Array ( [pies] => 9 [kot] => 2 [ryba] => 1 )
Explode i Implode
Funkcja explode służy do rozbijania łańcuchów na elementy (zwracane w postaci tablicy) za pomocą "znaku" podziału:<?php
$tekst = 'andrzej, adam, boczek, zbigniew, jajco';
$podzial = explode(', ', $tekst); // explode(znak podziału, łańcuch)
echo '<pre>';
print_r($podzial);
Znakiem podziału w tym przypadku jest przecinek i spacja. Zwócona zostanie tablica zawierająca wszystkie kawałki podzielonego łańcucha.
Funkcja implode działa odwrotnie, łączy elementy tablicy w łańcuch używając podanego znaku łączenia:<?php
$tekst = 'andrzej, adam, boczek, zbigniew, jajco';
$podzial = explode(', ', $tekst);
echo implode(' - ', $podzial);
RkBlog
Comment article