php.hr
Dobrodošli, Gost. Molimo, prijavite se ili se registrirajte.
12.12.2019., 08:15
1878 Postova 1000 Tema 442 Članova
Najnoviji Član: medolino
php.hr  |  PHP & MySQL  |  PHP for newbies  |  Problem sa operatorima pridruzivanja « natrag naprijed »
 Str: [1]
Autor Tema: Problem sa operatorima pridruzivanja  (Posjeta: 4854 )
tabula
Novi član
*
Offline Offline

Postova: 5


Profil
« : 02.07.2008., 15:01 »

Novi sam u PHPu i obzirom da ga ucim iz raznih PHP tutorijala, naisao sam na jedan problem koji nikako ne mogu da svarim. Naime, kada se radi o operatorima pridruzivanja u njihovom objasnjenju ne nalazim na nikakvu logiku. Jasno mi je da znak „=“ nije isto sto i znak jednakosti u matematici. Njihovo objasnjenje je slijedece:
a*=5  je isto sto i a=a*5
pa onda kazu:
a=5
a*=5  // vrijednost varijable je 50 ???
probao sam i to je zaista tako.
Ali kako raditi nesto sto vam nije jasno i za sto nigdje nisam nasao definiciju. Prema tome za mene je gornja formula posve nelogicna.
Probao sam i metodom „uzaludnih napora“ pa sam isao ovom logikom: ako je a=5, onda je desna strana 5*5=25. Te ako je desna strana 25 a predstavlja vrijednost a, onda se ta vrijednost pridruzuje lijevoj vrijednosti koja je identicna desnoj strani, sto znaci 25plus25=50.
Ali da ne bih izmisljao toplu vodu, molio bih da mi neko „na prste“ objasni ovaj primjer ili mi da definiciju, pa da me definitivno prosvijetli.
Unaprijed hvala.
Evidentirano
ttc
Administrator
PHP Programer
*****
Offline Offline

Postova: 111



Profil WWW
« Odgovor #1 : 13.07.2008., 13:30 »

Posalji tocan kod kojim si dobio vrijednost 50.
Evidentirano
tabula
Novi član
*
Offline Offline

Postova: 5


Profil
« Odgovor #2 : 21.07.2008., 07:16 »

Hvala sto ste se javili da mi pomognete.
O Reilly Learning PHP&MySQL Second Edition: kaze
. Combined assignment operators

Combined operation   Operation      Produces
$num+=y                       Addition      $num=$num+y
$num  -=y                       Subtraction      $num=$num-y
$num  *=y                       Multiplication   $num=$num*y
$num  /=y                       Division      $num=$num/y
$num.=  "y"                   Concatenation      $string=$string."y"

U Uvodu u PHP (nas udzbenik) stoji:
Operatori pridruživanja:
Primjer 18 – potrebno ga je napisati
<?
$int_var=5;
$int_var+=5; // sada je vrijednost varijable 10 – isto ako da smo napisali $int_var=$int_var+5
$int_var*=5; // vrijednost varijable je 50
$int_var/=10 // vrijednost je 5
// kod stringova imamo
$str_tekst='Moje ime je ';
$str_tekst.='Kreso'; // sada je sadržaj varijable Moje ime je Kreso
//možete se igrati malo kompleksnijim izrazima poput
$a = ($b = 4) + 5; // rezultat je 9
?>

Iduci tim tragom primjenio sam slican kod, gdje sam primjenio i punu i sktacenu verziju operatora:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title>Hello!</title>
</head>

<body>

<?php

$int_var=5;
echo $int_var+=5;  // sada je vrijednost varijable 10 – isto ako da smo napisali $int_var=$int_var+5
echo "<BR>";
echo $int_var*=5; // vrijednost varijable je 50
 echo "<BR>";
echo $int_var=$int_var*5; // vrijednost varijable bi trebala biti 50 po gornjoj logici
 echo "<BR>";
echo $int_var/=10; // vrijednost je 5
echo "<BR>";
echo $int_var=$int_var/10; // vrijednost bi trebala biti  5
echo "<BR>";
// kod stringova imamo
echo "<BR>";
echo $str_tekst='Moje ime je ';
echo "<BR>";
echo $str_tekst.='Kreso'; // sada je sadržaj varijable Moje ime je Kreso
//možete se igrati malo kompleksnijim izrazima poput
echo "<BR>";
echo $a = ($b = 4) + 5; // rezultat je 9
?>



</body>

</html>

i evo sta sam dobio:
10
50
250
25
2.5

Moje ime je
Moje ime je Kreso
9

Potpuno zbunjujuce.
Ili sam ja negdje pogrijesio pa ne vidim gresku ili je u Uvodu u PHP greska.
Pregledao sam i nekoliko knjiga na engleskom i u ni jednoj nisam nasao racunicu za  *= i /=.
Bio bih vam zahvalan kada bi mi vi razjasnili ovaj problem.



Evidentirano
coder_
Novi član
*
Offline Offline

Spol: Muški
Postova: 7



Profil
« Odgovor #3 : 31.07.2008., 01:46 »

Naravno da ti ispiše da je vrijednost 50.

Kod:
<?php

$int_var
=5;
$int_var+=5// sada je vrijednost varijable 10 &#8211; isto ako da smo napisali $int_var=$int_var+5
$int_var*=5// vrijednost varijable je 50

?>


prvo postaviš $int_vat na 5, pa ju zbrojiš sa 5, pa pomnožiš sa 10. To je stvar drugog razreda osnovne škole. Smile)
Probaj izračunat sam pa vidi što ćeš dobit.
« Zadnja izmjena: 31.07.2008., 01:50 coder_ » Evidentirano

mitja
Novi član
*
Offline Offline

Spol: Muški
Postova: 18


Profil
« Odgovor #4 : 31.07.2008., 19:21 »

treba pisati: "... da pomnozis sa 5.."
Nemoj zbunjivati php programera Coderu  Laughing

koliko godina imas  tabula?
Evidentirano
tabula
Novi član
*
Offline Offline

Postova: 5


Profil
« Odgovor #5 : 06.08.2008., 13:37 »

Coder je malo nervozan, istini za volju, trazio sam da mi neko objasni neke stvari i nista vise. Nicim ga nisam uvrijedio i cudi me njegova reakcija. Osim toga i njegova matematika mi je malo cudna. A evo vam obadvojici i odgovor na vasa pitanja:
Drugi razred osnovne skole sam zavrsio prije 58 godina. Sada mi je 66. Na fakultetu sam iz matematike imao vrlo visoku ocjenu (9). Nisam potplatio profesora. To je sto se toga tice.
A evo za mene zbunjujuceg koda:
<?php

$a=5;
echo $a+=5;
echo "<BR>";
echo $a=$a+5; 
echo "<BR>";
echo $a*=5;
echo "<BR>";
echo $a=$a*5;
echo "<BR>";
echo $a/=10;
echo "<BR>";
echo $a=$a/10;
echo "<BR>";

?>

gore sam naveo pune i skracene ekvivalente operatora pridruzivanja i evo rezultata:

10
15
75
375
37.5
3.75

Ovo mi je izracunao PHP. Po ovom, puni i skraceni ekvivalenti ne pokazuju isti rezultat. Gdje je caka? Ili ja radim nesto potpuno naopako! Ili postoji neko pravilo koje je meni nepoznato?
Pozdrav Ivan
Evidentirano
mitja
Novi član
*
Offline Offline

Spol: Muški
Postova: 18


Profil
« Odgovor #6 : 06.08.2008., 19:53 »

ajmo to riješiti jednom zauvijek...

kao prvo ovaj kod koji si napisao se izvrsava naredbu po naredbu tako da varijabla $a stalno mijenja vrijednost.To te vjerojatno zbunjuje.
Dakle u prvom retku imas da je $a = 5 sto znači da varijabla $a ima vrijednost 5.Ne ispisuješ je na ekran pa se to ne vidi na ekranu.U drugom retku ispisujes na ekran rezultat naredbe $a += 5 što je isto kao i naredba $a = $a +5 . Sobzirom da je vrijednost  varijable $a iz prvog retka 5 onda je ocigledno da ce sad $a = 5 + 5 imati vrijednost 10. Dakle sad je $a = 10.Treci redak ispisuje html naredbu <br> što browseru znači da se pređe u novi red (BR = break line).Ajmo dalje. 4. redak ispisuje na ekran rezultat naredbe $a = $a +5 . $a ima vrijednost 10 iz 2. retka pa ce sad kad joj dodas 5 imati vrijednost 15. 5. redak je opet <br> , dakle novi red. 6.redak ispisuje na ekran rezultat naredbe $a *=5 što  je isto kao i $a = $a * 5 pa je $a = 15 * 5 = 75. I tako dalje....
Mislim da bi ti sad trebalo biti jasno.Predji na novo poglavlje...


Evidentirano
tabula
Novi član
*
Offline Offline

Postova: 5


Profil
« Odgovor #7 : 07.08.2008., 12:33 »

Mitja, puno hvala. Ja jednostavno nisam uzeo u obzir cinjenicu da se izvrsenjem svake linije koda mjenje i vrijednost varijable. Sada je sve jasno i idem dalje. Jos jednom hvala.
Evidentirano
coder_
Novi član
*
Offline Offline

Spol: Muški
Postova: 7



Profil
« Odgovor #8 : 19.08.2008., 01:33 »

Ma kakvi nervozan, samo mi je malo čudno pošto je sve ovo objašnjeno u manualu. Sorry što sam malo burno reagirao.
Evidentirano

tabula
Novi član
*
Offline Offline

Postova: 5


Profil
« Odgovor #9 : 27.08.2008., 13:39 »

OK. Coder. Desi se da covjek zbog jednog drveta ne vidi cijelu sumu. To se i meni desilo. U svakom slucaju ako je to izvinjenje za tvoju trenutnu nervozu, ja ga prihvatam. Srdacan pozdrav i puno srece u zivotu...
Evidentirano
 Str: [1]
php.hr  |  PHP & MySQL  |  PHP for newbies  |  Problem sa operatorima pridruzivanja « natrag naprijed »
    Skoči na: