Jednostavno, da li neko zna objasniti?

1

Jednostavno, da li neko zna objasniti?

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Pogledajte sta donji kod daje za rezultat

Code:
<?php    $Array = array( 'Prvi', 'Drugi', 'Treci' );        foreach( $Array as &$Pointer );    foreach( $Array as $Pointer  );        print_r( $Array );     ?>

Output:

Array (     [0] => Prvi     [1] => Drugi     [2] => Drugi )



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Blood  Male
  • Ugledni građanin
  • Pridružio: 26 Jul 2003
  • Poruke: 384
  • Gde živiš: Beograd

ako pri definisanju arraya ne zadas i key i value, key se postavlja automatski, tako da
$array = array('Prvi', 'Drugi', 'Treci'); // je isto sto i $array[] = 'Prvi'; $array[] = 'Drugi'; $array[] = 'Treci';



offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Pa dobro, sta je tu problem?

Nego pogledaj output, zar ne bi trebao biti

Array (     [0] => Prvi     [1] => Drugi     [2] => Treci )

offline
  • Pridružio: 01 Apr 2005
  • Poruke: 797
  • Gde živiš: Niš

Da je čudno - čudno je, priznajem (ne znam samo kako ti pade na pamet da probas ovo, ako već nisi video negde).

Ali pored ovoga, zašto misliš da print_r() treba da se izvrši samo jednom? Ako uopšte misliš...

offline
  • Pridružio: 17 Mar 2004
  • Poruke: 293
  • Gde živiš: UK

Fali ti jedno unset($Pointer) nakon prve iteracije. U prvom sluchaju koristish referencu koja ostaje vazheca i NAKON iteracije.

PHP manual:
Citat:
Unless the array is referenced, foreach operates on a copy of the specified array and not the array itself. foreach has some side effects on the array pointer. Don't rely on the array pointer during or after the foreach without resetting it.
...
Reference of a $value and the last array element remain even after the foreach loop. It is recommended to destroy it by unset().

offline
  • Blood  Male
  • Ugledni građanin
  • Pridružio: 26 Jul 2003
  • Poruke: 384
  • Gde živiš: Beograd

heh, definitivno mi je potreban odmor, totalno sam prevideo sta si pokazao...

offline
  • Pridružio: 01 Apr 2005
  • Poruke: 797
  • Gde živiš: Niš

Možda se glupo ubacujem, ali usput da postavim jedno pitanje.

Volim disciplinu u programiranju, pa me zanima:

koji je najbolji i najsigurniji način za uništavanje objekata u PHP-u???

Istanciraš objekat tipa neke klase, uradiš šta ti treba i zbog uštede u memoriji + preglednost koda, ti uradiš:

$object = null;

ili


unset($object);

ili nešto treće...

Dakle šta preporučujete umesto destruktora?

offline
  • Pridružio: 25 Jul 2003
  • Poruke: 431
  • Gde živiš: Nis

unset($object);

offline
  • Pridružio: 01 Apr 2005
  • Poruke: 797
  • Gde živiš: Niš

Haker si Drogane...

U cemu je razlika.

Šta će uradi prvo a šta drugo?

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Bravo @bNasty

@zzzl
Rezultat je isti sta god da koristis. Meni je uobicajeno unset();
Ali inace tu postoji problem ako ti neka promjenljiva sadrzi instancu tog objekta, neces osloboditi memoriju.

Recimo:

$a = new test(); $b = $a; unset( $a );

Ko je trenutno na forumu
 

Ukupno su 1334 korisnika na forumu :: 38 registrovanih, 6 sakrivenih i 1290 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: amaterSRB, babaroga, bagor10, bigfoot, Bokiboks, CikaKURE, debeli, Dimitrise93, Dorcolac, draganl, Georgius, hooraay, ikan, Karla, kuntalo, lord sir giga, Marko Marković, mercedesamg, Mi lao shu, milenko crazy north, milimoj, Milometer, milos.cbr, Mixelotti, pein, procesor, S2M, Skywhaler, Sumadija34, suton, t84dar, TheBeastOfMG, Toper, Trpe Grozni, vasa.93, voja64, zlaya011, Zoca