Wstęp
Posted 3 lata ago / Bez kategorii
Tutorial ten nie pokazuje całej specyfikacji PHP. Głównie dobierałem te części które w zastosowaniu w WP wydały mi się zjawiskiem dość powszechnym.
Funkcje- ogólnie
Posted 3 lata ago / Bez kategorii
Funkcje można określić jako zestaw powiązanych ze sobą instrukcji. Funkjca może zwracać określone wartości lub nie. Można przesyłać do funkcji parametry zarówno na wejściu ( definicja funkcji) jak i na wyjściu (wywołanie funkcji).
Przykład funkcji.
function dodaj($c,$d)//nazwa funkcji wraz z jej parametrami
{ return $c + $d;}//ciało wraz z instrukcją return zwracającą wynik działań funkcji
echo dodaj(6,2);//wywołanie funkcji z konkretnymi argumentami
Wartości zmiennych istnieją tylko w danych funkcjach poza funkcjami tracą swoją wartość gdyż funkcje w sposób domyślny pracują na kopiach obiektów zmiennycha nie na oryginałach. Po wyjściu z funckji kopia jest likwidowana i wszystko wraca do pierwotnego stanu. Można temu zapobiec stosując tzw. referencje ;funkcja będzie pracować na oryginale obiektu dzięki czemu będzie miał on aktualną wartość.
Przykład funkcji gdzie parametr NIE jest referencją.
<?php
echo ‚bez referencji’;
function foof ($zmienna)
{
$zmienna++;
return $zmienna;
}
$a = 5;
echo $a."<br/>";//aktualna wartośc
echo foof ($a)."<br/>";//zwiekszone o 1 wiec 6
echo foof ($a)."<br/>";//to samo gdyż praca na nowej kopi obiektu, stara kopia likwidowana
?>
1. Funkcja foof pracuje na zmiennej w sposób zwyczajny, będzie pracowac na kopi jej egzemplarza.
Inkrementujemy wartośc zmiennej o 1 : $zmienna = $zmienna + 1;
2. Za $a podstawiamy wartość 5;
3. Printujemy ta wartość.
4. Wywołujemy funkcje z wartościa 5 która zostanie zwiększona o jeden co nam da 6.
5. Opuścilismy naszą funkcję kopia z aktualną wartościa 6 jest likwidowana , powracamy do stanu pierwotnego stanu z wartościa 5 dla zmiennej a , zatem wartość w a wywołaniu jest ta sama co daje ten sam ostateczny wynik drugiego wywołania tej samej funckji 6.
Przykład funkcji gdzie parametr JEST referencją.
<?php
echo ‚referencja parametr<br>’;
function foo (&$zmienna)//zmienna referencyjna
{
$zmienna++;
return $zmienna;
}
$a=5;
echo $a."<br/>";//5
echo foo ($a)."<br/>";//6
echo foo ($a)."<br/>";//7
?>
Różnica polega na tym że pracujemy na oryginale egzemplarza zmiennej bez żadnych tymczsowych likwidowanych kopii.
Ponowne wywołanie tej samejfunkcji w tym przypadku spowoduje że będzie brana pod uwagę aktualna wartośc zmiennej 6 co da w efekcie wynik działania funkcji jako 7.
Isnieją również funkcje będącymi referencjami jednak tego tematu nie będę poruszał.
pętla foreach
Posted 3 lata ago / Bez kategorii
Co to jest pętla foreach?
Pętla foreach jest pętlą przetwarzająca dane. Często jest wykorzystywana gdy chcemy coś powtórzyć na stronie np. kod html
.
W tym przykładzie zajmiemy sie przetwarzaniem tablicy.
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
print $arr;
}
?>
1. Definicja tablicy o nazwie arr. Jej elementami składowymi są 4 cyfry integer.
2-5 Pętla foreach. Tablica arr zostanie potraktowana jako zmienna tymczasowa value która jest z kolei referencją.
Zmienna tymczasowa value reprezentuje aktualny zgodny z przebiegiem pętli pojedynczy element tablicy ;1, potem 2,3,4.
Pętle i jej instrukcje warunkowa należy odczytywać tak:dla każdego elementu składowego tablicy arr traktowanej referencja zmiennej tymczasowej value zastosuj blok instrukcji poniżej warunku.
3.Każdy kolejny pojedyńczy element tablicy zostanie przemnożony przez liczbę 2.
4. Wbudowana funkcja print zwróci wartość przemnożonego elemntu:2,4,6,8. Ilość powtórzeń pętli jest uzależniona od ilości elementów przetwarzanych.
Funkcje pracujące na łańcuchach
Posted 3 lata ago / Bez kategorii
Omówię trzy wybrane funkcje pracujące na string’ach (łańcuchy tekstowe). Elementami tablic moga być również string’i a zatem funkcje te mogą przyjmować jako argumenty tablice z takimi elementami , jednak dla przejrzystości zastosuje w przykładach proste ciągi znakowe przechowywane w zmiennych.
1. str_replace().
Funkcja ta zamienia znaki niepożądane w łańcuchu przez znaki które mają być wstawione.Parametry:znak bądź ciagi znaków do zastąpienia, nowy znak bądź ciąg znaków który będzie wstawiony w łańcuch tekstowy, łańcuch tekstowy który będzie modyfikowany.
<?php
// zostanie zmieniony na "Modyfikacja textu"
$text_modyfikowany = "Podyfikacja textu";
$znak_zmieniony = "P";
$znak_wstawiony = "M";
$text_modyfikowany = str_replace($znak_zmieniony, $znak_wstawiony,$text_modyfikowany);
?>
2.explode().
Funkcja ta będzie rozdzielać łańcuch znakowy wg podanego znaku. Wynikiem działania funkcji jest tablica ciągów znakowych.
<?php
// string do rozdzielenia
$dane = "Paweł,Klaisz,Wroclove";
// wykorzystanie funkcji explode, wg przecinka
//pierwszy parametr okresla string wg ktorego lancuch ma byc rozdzielony , string ten rowniez zostanie ususniety
//drugi parametr okresla zmienna przechowujaca lancuch do podzielenia
$dane_osobowe = explode(",", $dane);
// wyświetlenie otrzymanej tablicy
echo $dane_osobowe[0];//Paweł
echo $dane_osobowe[1];//Klaisz
echo $dane_osobowe[2];//Wroclove
?>
3.strip_tags().
Funkcja ta ściąga niepotrzebne tagi html oraz php złańcuchów tekstowych. Jako parametr przyjmuje łańcuch do oczyszczenia. Można również określić opcjonalnie domyślny parametr w którym będą zawarte znaki( tagi) które nie zostaną usunięte z łańcucha. Skrócony przykład z http://php.net/manual/pl/function.strip-tags.php
<?php
$text = ‚<p>Test paragraph.</p><!– Comment –> <a href="#fragment">Other text</a>’;
// dopuść tagi: <p> i <a>
echo strip_tags($text, ‚<p><a>’);//<p>Test paragraph.</p> <a href="#fragment">Other text</a>
?>
Funkcje pracujące na tablicach
Posted 3 lata ago / Bez kategorii
Funkcji wbudowanych w PHP pracujących na tablicach jest wiele. Omówię tutaj trzy z nich:
1. array_map();
Zadaniem funkcji jest przetworzenie elementów tablicy przez funkcje callback.Parametry : nazwa funkcji zwrotnej( callback), tablica której elementy mają być przetwarzane.
<?php
function iloraz($n)
{
return $n*$n*$n;
}
$tablica = array(1, 2, 3, 4, 5);
$wynik_dzilania_array_map = array_map("iloraz", $tablica);
print_r($wynik_dzilania_array_map);
/* wynik zwrotny:
Array
(
[0] => 1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
)*/
?>
1.Definicja funkcji zwrotnej callback o nazwie „iloraz”. Jako parametr przyjmuje wartość pojedynczego danego elementu z tablicy. W ciele funkcji jest instrukcja return która będzie zwracać wartość ilorazu elementu.
7. Definicja tablicy wraz z jej elementami składowymi
8.Zmienna ta będzie tablicą z przetworzonymi elementami przez funkcje iloraz.
9.Printujemy wynik zwrotny.
2.array_key_exists();
Funkcja ta sprawdzi czy istnieje podany klucz lub index w tablicy. Parametry:nazwa klucza lub indexu, tablica w której szukany jest index bądź klucz. Funkcja zwraca true jeśli podana fraza istnieje lub fałsz jeśli nie.
<?php
$tablica = array(‚klucz1’ => 1, ‚klucz2’ => 4);
if (array_key_exists(‚klucz2′, $tablica)) {
echo "’Pierwszy’ element istnieje w tablicy";
}
?>
3.array_merge();
Funkcja ta łączy jedną lub więcej tablic w jedną.
Przykład pobrałem ze strony php.net:http://php.net/manual/pl/function.array-merge.php
Warto zapoznać się z opisem tej funkcji.
Przy tych samych kluczach textowych napisana starsza wersja wartośći zostanie przez nowszą. Prz tych samych kluczach liczbowych wartośći nie zostna napisane ale ostatnia wartość zostanie dopisana na koniec tablicy. Jeżęli jedna z tablic nie posiada np żądnych kluczy to klucze będa przenumerowane. Można równiez dodać jedną tablicę na koniec drugiej bez żądnych modyfikacji kluczy dodając operator +. Wszytkie przykłady odnajdziesz na powyżej wskazanym linku.
Analiza przykładu poniżej.
<?php
$tablica1 = array("kolor" => "czerwony", 2, 4);
$tablica2 = array("a", "b", "kolor" => "zielony", "kształt" => "trapezoid", 4);
$wynik = array_merge($tablica1, $tablica2));
print_r($wynik);
?>
wynik działania funkcji:
Array
(
[kolor] => zielony
[0] => 2
[1] => 4
[2] => a
[3] => b
[kształt] => trapezoid
[4] => 4
)
Analiza sposobu przetwarzania wartośći:
Do tablicy pierwszej została dopisana tablica druga.
Ponieważ zostały odnalezione te same klucze textowe „kolor” stara wartość tego klucza („czerwony”) została nadpisana przez nowszą „zielony”. Nie został zdefioniowany żaden klucz numeryczny a kolejnym elementem jest liczba 2 więc zgodnie ze sposobem indexacji od zera zostanie przypisany jej klucz numeryczny 0. Kolejny element to liczba 4 wiec nadany klucz to 1. Koniec tablicy pierwszej a zatem kolejym eleementem jest pierwszy element tablicy drugiej czyli „a” nie ma żadnego przypisanego klucza textowego ani liczbowego wiec przypisanym kolejnym kluczem będzie 2.Dla wartości „b” klucz 3.Kolejna wartością trapezoid z przypisanym nigdzie niepowtorzonym kluczem kształt a zatem dopisany kolejno do tablicy. Ostatni element drugiej tablicydo przypisania to liczba 4 z przypisanym automatycznie kluczem liczbowym 4.
3. array_replace();
Funkcja ta zamienia i nadpisuje wartości w tablicach.Jako parametry przyjmuje tablice do zamiany a zwraca tablicę wynikową lub NULL w razie wystąpienia błędu.Podobny przykład do poniższego odnajdziesz na stronie:http://php.net/manual/pl/function.array-replace.php. Pierwszym parametrem jest tablica bazowa w której będą zamienianie wartości, drugim tablica która będzie przetwarzać pierwsza. W przypadku występowania więcej niż dwóch tablic przetwarzanie będzie według kolejności zgłaszania tablic w kierunku rosnącym.
Analiza kodu poniżej.
<?php
$base = array("orange", "banana", "apple", "raspberry");
$replacements = array(0 => "pineapple", 4 => "cherry");
$replacements2 = array(0 => "grape");
$basket = array_replace($base, $replacements, $replacements2);
print_r($basket);
?>
//ostaeczny wygląd tablicy wynikowej.
Array
(
[0] => grape
[1] => banana
[2] => apple
[3] => raspberry
[4] => cherry
)
W tablicy base będą zamieniane wartości w dwóch etapach ponieważ tyle jest zgłaszanych kolejnych tablic w tym przypadku.
Etap pierwszy:
Pierwszym indeksowanym od zera elemntem w base jest orange ponieważ pod zerowym indexem istnieje w drugiej tablicy pineapple więc orange zostanie nadpisane przez pineapple.Banana,apple,raspberry które nie zostaną zastepione ponieważ nie mają powtarzających się kluczy w kolejnych tablicach, więc zostaną zachowane w tablicy w określonej kolejności. Element cherry z drugiej tablicy ma przypisany klucz liczbowy 4 a zatem jest ułożony jako kolejny w tablicy.
Etap drugi:
W drugiej tablicy występuje tylko jedna para klucz => wartość, 0=> grape. Ponieważ istnieje już klucz zero z przypisaną wartościa pineapple zostanie ona zastąpiona przez nowszą wersję grape. Reszta tablicy pozostaje bez zmian.
Tablice
Posted 3 lata ago / Bez kategorii
Tablice w PHP są typem danych. Są to zbiory uporządkowanych elementów, danych jednego typu. Dostęp do pojedynczego elementu tablicy jest określany za pomocą indeksu. Indeksacja tablicy zawsze zaczyna się od zera. Tablice można zagnieżdżać. Tablice można podzielić na tablice jednowymiarowe, wielowymiarowe oraz asocjacyjne. Głownie będę opisywał tablice jednowymiarowe i asocjacyjne.
Sposoby tworzenia tablic.
Poniżej kreacja tablicy wraz z przypisanymi elementami do danego indeksu.
<?php
$tablica[0] = "element1";
$tablice[1] = "element2";
$tablica[2] = "element3";
?>
Odwołanie się do danego elementu tablicy.
[php] print_r $tablica[0];//wyświetli element 1[/php]
Tworzenie tablicy za pomocą wbudowanej funkcji PHP array()
[php]$tablica = array(‚element1’, ‚element2′,’element3’);[/php]
Odwołanie sie do elementów tej tablicy tak samo jak powyżej.
Przypisywanie indeksów do tablicy.
//przypisywanie indeksów
$tab[] = 1;
$tab[] = 0;
$tab[] = 3;
$tab[] = 2;
Do tablicy tej nie są przypisywane żądne konkretne wartości elementów tylko same indeksy.
Tablice wielowymiarowe zagnieżdżone- wielowymiarowe
<?php
$tablica[0][‚imie’] = ‚Jan’;
$tablica[0][‚nazwisko’] = ‚Kowalski’;
$tablica[0][‚miasto’] = ‚Wrocław’;
$tablica[1][‚imie’] = ‚Maciej’;
$tablica[1][‚nazwisko’] = ‚Nowak’;
$tablica[1][‚miasto’] = ‚Kraków’;
print_r($tablica[1][‚imie’]);//wyprintuje Maciej
//wersja z użyciem array()
$workers = array
(
array("Mike",22,18),
array("Lucy",15,13),
array("Mark",5,2),
array("Jenny",17,15)
);
echo $workers[0][0].": In company: ".$workers[0][1].", age: ".$workers[0][2].".<br>";//wyprintuje Mark in company //22 age:18
echo $workers[1][0].": In company: ".$workers[1][1].", age: ".$workers[1][2].".<br>";
echo $workers[2][0].": In company: ".$workers[2][1].", age: ".$workers[2][2].".<br>";
echo $workers[3][0].": In company: ".$workers[3][1].", age: ".$workers[3][2].".<br>";//Jenny in company 17 age 15
?>
Tablice asocjacyjne. Tablice asocjacyjne zwane hashowymi tworzą pary klucz => wartość.
<?php
$students = array( "name"=>"saman", "Address"=>"Kandy Rd, Malabe", "TP"=>"+94-812-456789", "Email"=>"Saman@sliit.lk");
?>
Tablicą asocjacyjną jest tutaj tablica o nazwie students. Przykładowa para klucz => wartość, name => saman, gdzie kluczem jest name a wartością przypisaną do klucza saman.
Odwołanie się do elementu tablicy.
echo $students[‚Address’];// wyprintuje:Kandy Rd, Malabe
Konkatenacja
Posted 3 lata ago / Bez kategorii
Konkatencja jest to łączenie rozdzielonych łańcuchów tekstowych w w jedną całość. Operatorem konkatencji jest kropka.
Sposoby konaktenacji.Operator .= będzie oznaczał że łańcuch możę być doklejony zarówno z lewej jak i z prawej strony.
$string = „string”;
$string .= „ciąg1” ;
$string .= „ciąg2”;
echo $string;// string ciag1 ciag2
$łańcuch = ‚znak pierwszy’.$string.’znak drugi’;
echo $łańcuch;//znak pierwszy string ciag1 ciag2 znak drugi.
Gdy stosujemy łączenie łańcuchów będących html-em gdzie występuje znak „” to znak ” ma pierwszeństwo bo jest „silniejszy”. np.:
<?php
$text = ‚websitecreator’;
$url = ‚<a href = "https://websitecreator.pl/">’.$text.'</a>’;
echo url;//<a href = "https://websitecreator.pl/">websitecreator</a>
?>