Inne operacje na tablicach
Operatory tablicowe
Podobnie jak w przypadku operatorów stosowanych do zmiennych skalarnych (zmienne, która mogą przechowywać jednocześnie tylko jedną wartość liczbową), również do tablic mają zastosowanie następujace operatory:
-
+
unia - jeżeli mamy$t1+$t2
, to operator ten dodaje kolejne elementy tablicy$t2
na końcu tablicy$t1
. Jeżeli element tablicy$t2
posiada taki sam klucz jak któryś z elementów tablicy$t1
, to taki element nie zostaje dodany; -
==
równość; -
===
identyczność; -
!=
lub<>
nierówność; -
!==
nieidentyczność.
Ćwiczenie 2_10_0_1. Przykład zastosowania operatora tablicowego + (unia)
Zastosuj następujący kod PHP:
<?php
require_once('../moje_funkcje.php');
$t1=array('k1'=>3,'k2'=>1);
$t2=array('k1'=>4,'k3'=>2,'k4'=>67,'k5'=>34,'k6'=>8);
pokaz_tablice($t1+$t2);
$t3=array(3,1);
$t4=array(4,2,67,34,8);
pokaz_tablice($t3+$t4);
?>
W pierwszym dodawaniu, pominięty został element $t2['k1']
, natomiast w drugim - elementy $t4[0]
oraz $t4[1]
.
Ćwiczenie 2_10_0_2
Przetestuj działanie pozostałych operatorów porównań.
Tworzenie tablicy ze stringa za pomocą funkcji explode()
Tę funkcję możemy zastosować, jeżeli mamy ciąg znaków w którym poszczególne jego części oddzielone są określonym znakiem (np. znakiem przecinka, tabulacji, spacji, itd) lub kilkoma znakami (np. '^^^'). Cały string ulega rozbiciu, powstaje tablica, której elementami są fragmenty znajdujące się pomiędzy znakami rozdzielającymi. Funkcja posiada następującą postać: array explode(string $separator, string $ciag_znakow[, int $limit])
. Opcjonalnie $limit
ogranicza liczbę elementów tworzonej tablicy.
Ćwiczenie 2_10_0_3. Przykład tworzenia tablicy z łańcucha znaków za pomocą funkcji explode()
Zastosuj następujący kod PHP:
<?php
require_once('../moje_funkcje.php');
$tekst='8^^12^^3^^45';
$tablica=explode('^^',$tekst);
pokaz_tablice($tablica);
?>
Przekształcenie tablicy w ciąg znaków za pomocą funkcji implode()
Za pomocą tej funkcji wykonujemy operację odwrotną do pokazanej w poprzednim ćwiczeniu. Funkcja ma następującą postać: string implode(string $separator, array $tablica)
.
Ćwiczenie 2_10_0_4. Przykład przekształcenia tablicy w ciąg znaków, za pomocą funkcji implode()
Zastosuj następujący kod PHP:
<?php
$tablica=array(8,12,3,45);
$tekst=implode('^^',$tablica);
echo $tekst;
?>
Kilka funkcji ułatwiających poruszanie się po tablicy
Każda tablica posiada wewnętrzny wskaźnik aktualnego elementu. Podczas tworzenia tablicy, wskazuje on pierwszy element.
-
Funkcja
current()
- zwraca wartość bieżącego elementu, nie przesuwając wskaźnika. -
Funkcja
each()
- zwraca wartość bieżącego elementu oraz jego klucz/index, a następnie przesuwa wskaźnik o jedną pozycję, w kierunku ostatniego elementu tablicy. Wynik jest zwracany w postaci 4-elementowej tablicy o kolejnych elementach:$wynik[1]
,$wynik[value]
,$wynik[0]
,$wynik[key]
. Dwa pierwsze elementy, to bieżąca wartość, natomiast dwa ostatnie, to bieżący klucz. -
Funkcja
next()
- przesuwa wewnętrzny wskaźnik tablicy i zwraca element tablicy aktualnie wskazywany przez wskaźnik albo zwracafalse
, jeżeli nie ma już więcej elementów. -
Funkcja
prev()
- działa przeciwnie jaknext()
, ponieważ cofa wskaźnik. -
Funkcja
end()
- przesuwa wewnętrzny wskaźnik tablicy na ostatni element i zwraca jego wartość. -
Funkcja
reset()
- ustawia wskaźnik na pierwszym elemencie i zwraca jego wartość. Jeżeli tablica jest pusta, to zwracafalse
.
Uwaga! Stosując powyższe funkcje, należy uważać aby nie przekroczyć zakresu elementów.
Ćwiczenie 2_10_0_5. Przykład zastosowania funkcji ułatwiająych porusznie się po tablicy: current(), each(), next(), prev(), end(), reset().
Zastosuj następujący kod PHP:
<?php
require('../moje_funkcje.php');
$tablica=array(8,12,3,45);
$element=current($tablica);
echo $element;
$t=each($tablica);
pokaz_tablice($t);
next($tablica);
$element=current($tablica);
echo $element;
prev($tablica);
$element=current($tablica);
echo '<br >'.$element;
$element=end($tablica);
echo '<br >'.$element;
$element=reset($tablica);
echo '<br >'.$element;
?>
Prześledźmy kolejne kroki:
-
utworzyliśmy 4-elementową tablicę
$tablica
o elementach8,12,3,45
; -
funkcja
current($tablica)
zwraca pierwszy$element
tablicy; -
funkcja
each($tablica)
zwraca wartość i klucz pierwszego elementu i przesuwa wskaźnik na element drugi; -
funkcja
next($tablica)
przesuwa wskaźnik na trzeci element tablicy; -
funkcja
current($tablica)
zwraca trzeci$element
tablicy; -
funkcja
prev($tablica)
cofa wskaźnik na drugi element tablicy; -
funkcja
current($tablica)
zwraca drugi$element
tablicy; -
funkcja
end($tablica)
zwraca ostatni$element
tablicy; -
funkcja
reset($tablica)
zwraca pierwszy$element
tablicy;