php.hr

PHP & MySQL => PHP for newbies => Autor teme: tabula - 02.07.2008., 15:01



Naslov: Problem sa operatorima pridruzivanja
Autor: tabula - 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.


Naslov: Odg: Problem sa operatorima pridruzivanja
Autor: ttc - 13.07.2008., 13:30
Posalji tocan kod kojim si dobio vrijednost 50.


Naslov: Odg: Problem sa operatorima pridruzivanja
Autor: tabula - 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.





Naslov: Odg: Problem sa operatorima pridruzivanja
Autor: coder_ - 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. :))
Probaj izračunat sam pa vidi što ćeš dobit.


Naslov: Odg: Problem sa operatorima pridruzivanja
Autor: mitja - 31.07.2008., 19:21
treba pisati: "... da pomnozis sa 5.."
Nemoj zbunjivati php programera Coderu  :lol:

koliko godina imas  tabula?


Naslov: Odg: Problem sa operatorima pridruzivanja
Autor: tabula - 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


Naslov: Odg: Problem sa operatorima pridruzivanja
Autor: mitja - 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...




Naslov: Odg: Problem sa operatorima pridruzivanja
Autor: tabula - 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.


Naslov: Odg: Problem sa operatorima pridruzivanja
Autor: coder_ - 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.


Naslov: Odg: Problem sa operatorima pridruzivanja
Autor: tabula - 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...


php.hr | Powered by SMF 1.1.13. © 2005, Simple Machines LLC. All Rights Reserved.