[ networkprofiler @ 28.04.2011. 18:58 ] @
Zdravo,

Pratim tutorijal Lynda mysql_php i buni me ovaj kod:

static function find_by_id($id=0){
global $database;
$result_array = self::find_by_sql("SELECT * FROM users WHERE id=$id");
return !empty($result_array) ? array_shift($result_array) : false;
}

Znam sta radi funkcija array_shift ali mi nije jasno, zasto kada nadjem tog usera treba da izbrisem taj value? Zasto ga samo ne citam?
Da li postoji neka prednost ovoga?

Sve sto predavac kaze je: ode koristimo funkciju array_shift, secate se sta ona radi.



Hvala unapred.

[ Br@nkoR @ 28.04.2011. 19:27 ] @
Šta vraća metod find_by_sql?
array_shift pored toga što briše prvi elemenat niza, ona taj elemenat i vraća kao rezultat te funkcije.
Pa je moja pretpostavka, nisam gledao tutorijal zbog nečega kao sledeće:
Code (php):
<?php
$niz = array(
                 array(
                          'name1' => 'value1',
                          'name2' => 'value2',
                          'name3' => 'value3'
                        )
                );
print_r(array_shift($niz));
?>


[ networkprofiler @ 28.04.2011. 19:37 ] @
Hvala puno.
Evo i metod find_by_sql :

static function find_by_sql($sql=""){
global $database;
$result_set = $database->query($sql);

$object_array = array();
while($row = $database->fetch_array($result_set)){

$object_array[] = self::instantiate($row);

}
return $object_array;
}
[ Br@nkoR @ 28.04.2011. 20:08 ] @
Nisam baš vešt u objašnjavanju, javiće se nadam se neko ko će to bolje objasniti, ali kao i što sam napisao u onom primeru, pošto se od metoda find_by_id očekuje da vrati samo jedan red iz tabele, a pri tom se poziva metoda find_by_sql koja vraća niz pri čemu svaki član tog niza predstavlja acocijativni niz članova jednog reda tabele, nešto kao niz u nizu, matrica.
Isto kao da je napisno
return $result_array[0];







[Ovu poruku je menjao Br@nkoR dana 28.04.2011. u 22:25 GMT+1]
[ networkprofiler @ 28.04.2011. 20:11 ] @
Super objasnjavas nego mozda da ja malo preformulisem pitanje.

Znaci to je jedina funkcija koja to moze da odradi? Mene buni to brisanje iz niza. Ok mi je da uzmem vrednost prvog, ali cemu potreba za brisanjem?

Hvala.
[ Br@nkoR @ 28.04.2011. 21:03 ] @
Hvala :)
Ne, ne briše ga, već se prvi član niza vraća kao rezultat funkcije array_shift().
Može i pomoću funkcije reset() da se dobije prvi član niza.

[Ovu poruku je menjao Br@nkoR dana 28.04.2011. u 22:23 GMT+1]
[ VladaSu @ 29.04.2011. 00:08 ] @
Citat:
Br@nkoR:
Ne, ne briše ga, već se prvi član niza vraća kao rezultat funkcije array_shift().
Može i pomoću funkcije reset() da se dobije prvi član niza.


Brise ga iz niza ali se u ovom slucaj taj niz vise nigde ne koristi.
Reset isto vraca prvi element niza ali ga ne brise.
[ Br@nkoR @ 29.04.2011. 09:41 ] @
Hvala,
da upravu si, nisam se lepo izrazio.