Professional Documents
Culture Documents
2 PHP
2 PHP
MIRJANA KOCALEVA
Што е PHP
Programmer Editor
NotePad, NotePad++, CodeIgniter
PHP блок
Тагови кои се валиден начин за да се започне и заврши блок со PHP код се:
<% %>
<? ?>
<?= ?>
<?php ?>
променливи
Името на променливата започнува со знакот за долар ($) по кој следува буква или
долна црта, па следува број или буква, броеви или долни црти
Валидни погрешни
$abc = 12; abc = 12;
$total = 0; $2php = 0;
$largest_so_far = 0; $bad-punc = 0;
&_4abc=0;
Изрази
Излез 42
Излез
echo е јазична конструкција - може да се третира како функција со еден параметар. Без
загради и прифаќа повеќе параметри.
print е функција со само една параметар, но опционално може да има и загради, па така
може да изгледа како јазична конструкција (може да се користи како дел од израз)
<?php
$x = "15" + 27;
echo $x;
echo("\n"); или echo "<br>"; и php скриптата ќе ја сместиме во html
echo $x, "\n";
print $x;
print "\n";
print($x);
print("\n");
?>
Услов If (во големи загради { })
Логички оператори( == != < > <= >= and or ! ) (еднакво, различно, помало, поголемо,
помало или еднакво, поголемо или еднакво, и, или , негација)
<?php
$ans = 42;
if ( $ans == 42 ) {
print "Hello world!\n";
} else {
print "Wrong answer\n";
}
Низи
<?php
$stuff = array("Hi", “2");
echo $stuff[1], "\n";
?>
Излез 2
Излез cat
<?php
$stuff = array("name" => "kire",
"course" => "IF2016");
echo $stuff["course"], "\n";
?>
Излез IF2016
Приказ на цела низа
Излез
Array ( [2] => eden [9] => dva )
var_dump .vs. print_r
<?php
$stuff = array("predmet" => "Internet_Programiranje",
"br_studenti" => "70");
var_dump($stuff);
?>
Излез
array(2) {
["predmet"]=> string(22) "Internet_Programiranje"
["br_studenti"]=> string(2) "70"
}
var_dump()
Излез
One Two bool (false)
Јамки во низа
<?php
$stuff = array("name" => "Chuck", "course" => "SI664");
foreach($stuff as $k => $v ) {
echo "Key=",$k," Val=",$v,"\n";
}
?>
Излез
Key=name Val=Chuck Key=course Val=SI664
$x = 5;
$y = Array("x" => "Hello");
print $y[x];
Излез
Hello, но х е недефинирана константа
$x = 2;
$y = x + 5;
print $y;
Исто и во овај случај, излез 5, но х е недефинирана константа
Стрингови
<?php
echo ' This is a test '; // This is a c++ style comment
/* This is a multi line comment
yet another line of comment */
echo ' This is yet another test ';
echo 'One Final Test '; # This is a shell-style comment
?>
Променливи
3 вида:
Local (локални)
Global (глобални)
Static (статични)
Локална променлива
<?
$x = 4;
function assignx ()
{
$x = 0;
print "\$x inside function is $x. ";
}
assignx();
print "\$x outside of function is $x. ";
?>
Резултати
$x inside function is 0.
$x outside of function is 4.
Глобална променлива
<?
$somevar = 15;
function addit()
{
GLOBAL $somevar;
$somevar++;
print "Somevar is $somevar";
}
addit();
?>
Резултат : Somevar is 16
Статична променлива
<?
function keep_track()
{
STATIC $count = 0;
$count++;
print $count;
print ””;
}
keep_track();
keep_track();
keep_track();
?>
Резултат : 1 2 3
Што ќе се прикаже откако ќе се изврши
следнава скрипта?
<?php
define(myvalue, "10");
$myarray[10] = "Dog";
$myarray[] = "Human";
$myarray['myvalue'] = "Cat";
$myarray["Dog"] = "Cat";
print "The value is: ";
print $myarray[myvalue]."\n";
?>
<?php
$a = 10;
$b = 20;
$c = 4;
$d = 8;
$e = 1.0;
$f = $c + $d * 2;
$g = $f % 20;
$h = $b - $a + $c + 2;
$i = $h << $c;
$j = $i * $e;
print $j;
?>
Пресметки за задачата од претходниот
слајд
$f = $c + $d * 2 = 4+8*2=20
$g = $f % 20=20%20=1 и остаток 0
$h = $b - $a + $c + 2=20-10+4+2=16
$i = $h << $c=16<<4 = x*2^y = 16*2^4=16*16=256
$j = $i * $e=256*1.0=256
$a *= pow (2, 2) => $a*2^2 = $a*4
$a <<= 2 => $a*2^2 = $a*4
pow = на квадрат
<<= шифтирање на лево
Кои вредности треба да им бидат доделени на променливите $
a, $ b и $ c со цел следнава скрипта да го прикаже стрингот
Hello, World!?
<?php
$string = "Hello, World!";
$a = ?;
$b = ?;
$c = ?;
if($a) {
if($b && !$c) {
echo "Goodbye Cruel World!";
} else if(!$b && !$c) {
echo "Nothing here";
}
} else {
if(!$b){
if(!$a && (!$b && $c)) {
echo "Hello, World!";
} else {
echo "Goodbye World!";
}
} else {
echo "Not quite.";
}}
?>
Точен одговор: False, False, True
Логички оператори
$a = $b
Се доделува вредноста $b на $a (кои се TRUE)
$a == $b
Компарација на вредноста на $a и $b и враќаат TRUE
$a === $b
Компарација на двете вредности и типовите на $a и $b и враќа FALSE
оператори
Increment / Decrement ( ++ -- )
Конкатенација на стрингови( . )
еднаквост( == != )
Троен оператор( ? : )
Increment / Decrement
$x = 5;
$y = 15 + $x++;
echo "x is $x and y is $y \n";
x is 6 and y is 20
Конкатенација
$a = ‘Здраво' . ‘на‘.’сите’;
echo $a . "\n";
Здраво на сите
Еднаквост – ги претвора податоците при
самиот процес на споредба
1
да
точно
еднакво
Троен оператор
<?php
$grade=78;
print($grade>50 ? "Passed" : "Failed");
?>
Passed
Кој е излезот од следнава скрипта?
<?php
$array = '0123456789ABCDEFG';
$s = '';
for ($i = 1; $i < 50; $i++) {
$s .= $array[rand(0,strlen ($array) - 1)];
}
echo $s;
?>
Точен одговор: Низа од 49 случајни карактери
Функцијата rand зема променливи по случаен избор
Функцијата strlen враќа должина на низата
Следнава серија од if услови (1) може најдобро да се
претстави со switch конструктор кој користи default
(стандарден ) случај (2)
(1)
<?php
if($a == 'a') {
somefunction();
} else if ($a == 'b') {
anotherfunction();
} else if ($a == 'c') {
dosomething();
} else {
donothing();
}
?>
switch конструктор кој користи default
(стандарден ) случај
(2)
<?php
switch($a) {
case 'a':
somefunction();
break;
case 'b':
anotherfunction();
break;
case 'c':
dosomething();
break;
default:
donothing(); }
?>
Под претпоставка дека сакаме да ја промениме вредноста на
секој елемент на $myarray низата со иста вредност
<?php
$myarray = array ("My String", "Another String", "Hi, Mom!");
print_r ($myarray);
?>
ќе користеме for циклус (на пример следниов циклус)
<?php
$myarray = array ("My String", "Another String", "Hi, Mom!");
for($i = 0; $i < count($myarray); $i++)
{
$myarray[$i] = " novo ";
}
print_r($myarray);
?>
<?php
define("STOP_AT", 1024);
$result= array();
for($idx = 1; $idx < STOP_AT; $idx *= 2)
{
$result[] = $idx;
}
print_r($result);
?>
<?php
function is_leap($year = 2000)
{
$is_leap = (!($year %4) && (($year % 100) || !($year % 400)));
return $is_leap;
}
var_dump(is_leap(1987)); /* Displays false */
var_dump(is_leap()); /* Displays true */
?>
На излез ќе врати bool(false) bool(true)
Која вредност ќе се прикаже откако ќе се изврши следново?
Претпоставуваме дека кодот е извршен со користење на
следнава URL адреса:
testscript.php?c=25
<?php
function process($c, $d = 25)
{
global $e;
$retval = $c + $d - $_GET['c'] - $e;
return $retval;
}
$e = 10;
echo process(5);
?>
Точен одговор: -5 (затоа што вредноста на $c е дефинирана во echo process(5) и изнесува 5, вредноста на
$d = 25, со $_GET['c'] ја земаме вредноста на с од УРЛ-то и за е имаме 10 т.е. $retval =5+25-25-10=-5)
GET метод
<?php
function familyName($fname) {
echo "$fname Jons.<br>";
}
familyName("Jani");
familyName("Kim");
familyName("Stale");
familyName("Kai Jim");
familyName("Borge");
?>
Резултат
Jani Jons.
Kim Jons.
Stale Jons.
Kai Jim Jons.
Borge Jons.
Дефинирање на функција
<?php
function myfunction($a, $b = true)
{
if($a && !$b) {
echo "Hello, World!\n";
}}
$s = array(0 => "my", 1 => "call", 2 => '$function', 3 => ' ', 4 => "function", 5 => '$a', 6 => '$b',
7 => 'a', 8 => 'b', 9 => '');
$a = true;
$b = false;
/* Group A */
$name = $s[x].$s[x].$s[x].$s[x].$s[x].$s[x];
/* Group B */
$name(${$s[x]}, ${$s[x]});
?>
Ја разгледуваме следнава скрипта:
целта е да се прикаже Hello, World! стрингот, кога се извршува
истата
<html>
<head>
<title>First PHP program</title>
</head>
<body><p>
<?php
echo "Hello world!";
?>
</p></body>
</html>
Почетни примери
<html>
<?php
echo "Hello World. Today is ".date("l").". ";
?>
How are you?
</html>
Times
The time here is 12:33 pm